J'essaie de charger des données à l'aide de SQL Loader mais en obtenant une erreur en-dessous.Erreur SQL Loader - Ligne non chargée en raison d'erreurs de données
Table à charger -
CREATE TABLE TEST_PIPE_SEP (FILE_NAME VARCHAR2(3000), KEY_COL VARCHAR2(4000), DESCR VARCHAR2(100), RUN_DATE DATE);
Je crée le fichier CTL dynamique en utilisant la commande Shell et DÉS afin que je puisse obtenir le fichier de traitement en cours et de le transmettre comme valeur par défaut de la colonne FILE_NAME.
#!/bin/ksh
echo "starting script"
#cd data
for i in data/Key_Mismatch_Output_UAT*.csv
do
#echo "$i"
filename=`basename "${i}"`
echo "$filename"
#sed '1d' "$i" >> test.csv
sed -e "s/#file_name#/file_name \"${filename}\",/g" test.ctl > new_test_3.ctl
sqlldr ERRORS=100000 userid=$USER_CRED control=new_test_3.ctl data=data/$filename silent=all log=data/$filename".log" bad=data/$filename.bad skip=1
wait
done
echo "ending script"
Le format de test.ctl est comme ci-dessous que je suis l'édition à temps courir avec sed pour passer le nom du fichier de traitement actuel -
LOAD DATA
CHARACTERSET WE8ISO8859P1
APPEND
INTO TABLE TEST_PIPE_SEP
FIELDS TERMINATED BY ','
(
#file_name#
key_col "trim(:key_col)",
descr "trim(:descr)",
run_date "SYSDATE"
)
Le nouveau fichier qui se crée après la ETD Commend est comme ci-dessous -
LOAD DATA
CHARACTERSET WE8ISO8859P1
APPEND
INTO TABLE TEST_PIPE_SEP
FIELDS TERMINATED BY ','
(
file_name "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv",
key_col "trim(:key_col)",
descr "trim(:descr)",
run_date "SYSDATE"
)
Le fichier CSV et son contient -
Key Columns,Description
"C"|"G000053929"|"ABCD"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file1
"C"|"G000053621"|"HGHQ"|"G000053621"|""|""|"CBI"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2
"C"|"G000053929"|"HGHQ"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2
et je reçois ci-dessous erreur et pas en mesure de trouver la cause de l'itinéraire essayé de changer le fichier CTL autant que possible, mais ne sont pas capables de charger des données
Table TEST_PIPE_SEP, loaded from every logical record.
Insert option in effect for this table: APPEND
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILE_NAME FIRST * , CHARACTER
SQL string for column : "TRIM('Key_20170804070448.csv')"
KEY_COL NEXT * , CHARACTER
DESCR NEXT * , CHARACTER
RUN_DATE NEXT * , CHARACTER
SQL string for column : "SYSDATE"
Table TEST_PIPE_SEP:
0 Rows successfully loaded.
1 Row not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
S'il vous plaît me demander si plus d'information est nécessaire.
J'utilise
Oracle Database 11g Enterprise Edition de presse 11.2.0.4.0 - 64bit production
Merci pour etsa de réponse. J'ai essayé d'utiliser le mot-clé CONSTANT mais cela me donne la même erreur. Avez-vous exécuté le scénario avec succès si oui pourriez-vous donner l'exemple de fichier CTL que vous utilisez et oui je modifie la structure CTL pour ajouter TRAILING NULLCOLS. – mradul
@mradul Oui j'ai exécuté avec succès. J'ai ajouté CTL à ma réponse – etsa
@mradul a ajouté le ctl de journal et les données d'échantillon (votre plus une autre rangée) – etsa