Chargement XML via un fichier CTL
Bonjour tout le monde,
Mon but est de charger les données d'un fichier XML dans une table d'une base de données Oracle en passant par une requête SQL*Loader et un fichier de description CTL.
1 - Requête SQL*Loader utilisée:
Code:
1 2 3 4 5 6 7 8
| sqlldr\
userid= user\
control=path_to_ctl\
data=path_to_xml\
log=path_to_log\
bad=path_to_bad\
discard=path_to_dsc\
silent='header,feedback' |
2 - Format du fichier XML en entrée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid XML 2013 Designer Edition (Trial) 11.1.0.4725 (http://www.liquid-technologies.com) -->
<socle:FLUX xmlns:obj="http://Objets_Metiers" xmlns:socle="http://Socle_Librairie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnTete>
.......
</EnTete>
<Donnees>
<obj:DOMAINE>
<C1>VAL1_C1</C1>
<C2>
<C21>VAL1_C2</C21>
</C2>
<C3>VAL1_C3</C3>
</obj:DOMAINE>
</Donnees>
</socle:FLUX> |
3- Format du fichier CTL:
Code:
1 2 3 4 5 6 7 8 9 10
| LOAD DATA
INFILE "fic" "str '</obj:DOMAINE>'"
append INTO TABLE MA_TABLE
TRAILING NULLCOLS
(
dummy filler terminated by ">",
C1 ENCLOSED BY "<C1>" AND "</C1>",
C2 ENCLOSED BY "<C2><C21>" AND "</C21></C2>",
C3 ENCLOSED BY "<C3>" AND "</C3>"
) |
4- Erreur obtenue à l'éxcution du code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Record 1: Rejected - Error on table MA_TABLE, column C1.
Initial enclosure character not found
Record 2: Rejected - Error on table MA_TABLE, column C1.
Initial enclosure character not found
Table MA_TABLE:
0 Rows successfully loaded.
2 Rows 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.
Space allocated for bind array: 49536 bytes(64 rows)
Read buffer bytes: 1048576
Total logical records skipped: 0
Total logical records read: 2
Total logical records rejected: 2
Total logical records discarded: 0 |
D'après les logs, on remarque que le programme a lu 2 records, alors qu'il n'existe qu'un seul enregistrement dans le fichier XML.
Il est fort probable que le fichier CTL ne décrit pas bien le fichier XML en entrée, et c'est pour ça que je me tourne vers vous.
Merci également de bien noter si la description de la balise <C2><C21> est bien faite dans le fichier CTL.
Je vous remercie d'avance pour vos suggestions.
Cordialement.