sql >> Database >  >> RDS >> Oracle

Gegevensvelden overslaan tijdens het laden van gegevens met scheidingstekens met SQLLDR

Definieer de kolom die u wilt overslaan als FILLER. Houd er rekening mee dat de volgorde van de kolommen in het controlebestand meestal de volgorde is waarin ze zich in het gegevensbestand bevinden. Als de naam overeenkomt met een kolom in de tabel, komt hij daar terecht.

...
(
  f1 CHAR,  -- 1st field in the file, goes to column named f1 in the table
  X FILLER, -- 2nd field in the file, ignored
  f3 CHAR,  -- 3rd field in the file, goes to column named f3 in the table
  f2 CHAR   -- 4th field in the file, goes to column named f2 in the table
)

Met andere woorden, de volgorde van de kolommen in het controlebestand komt overeen met de volgorde waarin ze zich in het gegevensbestand bevinden, niet hun volgorde in de tabel. Dat komt overeen met de naam, niet de volgorde.

EDIT - Ik heb enkele opmerkingen toegevoegd voor uitleg, maar ik geloof dat ze niet op die positie in het eigenlijke bestand kunnen staan. Zie hieronder voor een volledig voorbeeld:

Tabel maken:

CREATE TABLE T1
(
  F1  VARCHAR2(50 BYTE),
  F2  VARCHAR2(50 BYTE),
  F3  VARCHAR2(50 BYTE)
);

Het controlebestand, example.ctl:

load data 
infile *
truncate
into table t1
fields terminated by '|' trailing nullcols
(
f1 CHAR,
x FILLER,
f3 CHAR,
f2 CHAR
)
BEGINDATA
a|b|c|d
w|x|y|z

Voer het uit:

C:\temp>sqlldr userid=login/[email protected] control=example.ctl
SQL*Loader: Release 11.2.0.1.0 - Production on Wed Apr 22 11:25:49 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Commit point reached - logical record count 2

Kies uit de tabel:

Hopelijk helpt dit.




  1. Is er een manier om FORALL te gebruiken om gegevens uit een array in te voegen?

  2. PHP - oci_connect niet gevonden

  3. Ontsnappen en invoegen van geserialiseerde gegevens in MySQL

  4. Hoe de sortering van een database in MySQL te tonen