sql >> Database teknologi >  >> RDS >> Oracle

Springer datafelter over, mens afgrænsede data indlæses ved hjælp af SQLLDR

Definer den kolonne, du vil springe over, som FILLER. Husk, at rækkefølgen af ​​kolonnerne i kontrolfilen typisk er den rækkefølge, de er i datafilen. Hvis navnet matcher en kolonne i tabellen, er det der, det skal hen.

...
(
  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
)

Med andre ord matcher rækkefølgen af ​​kolonnerne i kontrolfilen den rækkefølge, de er i datafilen, ikke deres rækkefølge i tabellen. Det matches af navn, ikke rækkefølge.

EDIT - Jeg tilføjede nogle kommentarer til forklaring, men jeg tror, ​​de ikke kan være i den position i selve filen. Se nedenfor for et fuldstændigt eksempel:

Opret tabel:

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

Kontrolfilen, 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

Kør det:

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

Vælg fra tabellen:

Forhåbentlig hjælper dette.




  1. Sådan migreres fra MSSQL til MySQL

  2. Hvordan kan jeg bruge MySQL med Python 3.3 og Django 1.5?

  3. MySQL Vælg både dette og det

  4. Opret forbindelse til mysql-server uden sudo