sql >> Base de Datos >  >> RDS >> Oracle

Omitir campos de datos al cargar datos delimitados usando SQLLDR

Defina la columna que desea omitir como RELLENO. Tenga en cuenta que el orden de las columnas en el archivo de control suele ser el orden en que están en el archivo de datos. Si el nombre coincide con una columna de la tabla, ahí es donde irá.

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

En otras palabras, el orden de las columnas en el archivo de control coincide con el orden en que están en el archivo de datos, no con su orden en la tabla. Eso se corresponde con el nombre, no con el orden.

EDITAR:agregué algunos comentarios para explicar, pero creo que no pueden estar en esa posición en el archivo real. Vea a continuación un ejemplo completo:

Crear tabla:

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

El archivo de control, ejemplo.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

Ejecutarlo:

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

Seleccione de la tabla:

Espero que esto ayude.