Bonjour,

J'ai un fichier à charger via SQL*Loader et je ne dois pas accepter les valeurs NULL.
Je n'ai donc pas mis le TRAILING NULLCOLS.

Dans la table de destination, j'ai une colonne (Col8) qui doit être renseignée avec la somme des deux colonnes précédentes

Mon fichier de controle ressemble à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LOAD DATA INFILE 'fichier.txt'
TRUNCATE 
INTO TABLE TABLE
FIELDS TERMINATED BY ';' 
 ( 
  Col1 CONSTANT 'Constant', 
  Col2 CHAR(24), 
  Col3 BOUNDFILLER, 
  Col4 BOUNDFILLER, 
  Col5 CHAR(2) "to_date(:Col5 || '/' || :Col4|| '/' || :Col3,'DD/MM/YYYY')", 
  Col6 INTEGER EXTERNAL(12), 
  Col7 INTEGER EXTERNAL(12), 
  Col8 "round(:Col6 + :Col7)",
  Col9 "sequence_x.nextval"
 )
Ceci conduit à l'erreur suivante :

Enregistrement 1 : Rejeté - Erreur sur tableTABLE, colonne Col8.
Colonne absente avant fin d'enregis. logique (utiliser TRAILING NULLCOLS)
En mettant le fameux TRAILING NULLCOLS, l'import fonctionne mais si il me manque des champs ou que j'ai des champs vide, je n'ai plus d'erreur ce que je ne veux pas.

A priori SQL Loader s'attend à avoir une valeur dans le fichier pour Col8 même si on ne s'en sert pas.
D'ailleurs si je retire la Col8, j'ai le même problème avec Col9. Je ne comprends pas bien car dans l'exemple de la FAQ sur les séquences il n'y a pas de TRAILING NULLCOLS non plus.

Merci pour vos suggestions