Oracle
 sql >> Base de données >  >> RDS >> Oracle

Ignorer les champs de données lors du chargement de données délimitées à l'aide de SQLLDR

Définissez la colonne que vous souhaitez ignorer comme FILLER. Gardez à l'esprit que l'ordre des colonnes dans le fichier de contrôle correspond généralement à l'ordre dans lequel elles se trouvent dans le fichier de données. Si le nom correspond à une colonne du tableau, c'est là qu'il ira.

...
(
  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 d'autres termes, l'ordre des colonnes dans le fichier de contrôle correspond à l'ordre dans lequel elles se trouvent dans le fichier de données, et non à leur ordre dans la table. Cela correspond au nom, pas à l'ordre.

EDIT - J'ai ajouté quelques commentaires pour l'explication, mais je crois qu'ils ne peuvent pas être dans cette position dans le fichier réel. Voir ci-dessous pour un exemple complet :

Créer un tableau :

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

Le fichier de contrôle, 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

Exécutez-le :

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

Sélectionnez dans le tableau :

J'espère que cela vous aidera.