2009-03-26 10 views
1

Quelqu'un sait-il comment faire? Je sais qu'il existe un meilleur moyen de charger des données XML dans Oracle sans utiliser SQL * Loader, mais je suis simplement curieux de savoir comment cela est fait en l'utilisant. J'ai déjà un code qui peut charger des données XML dans la base de données, cependant, il ne fonctionnera pas si le fichier XML contient des valeurs contenant un CDATA ...Oracle SQL * Loader obtenant des valeurs CDATA

Ci-dessous le code du fichier de contrôle qui fonctionne si les valeurs ne sont pas CDATA ...

LOAD DATA 
INFILE FRATS.xml "str '</ROW>'" 
APPEND 
INTO TABLE "FRATERNITIES" 
( 
    DUMMY FILLER TERMINATED BY "<ROW>", 
    THE_CODE SEQUENCE (MAX, 1), 
    DUMMY2 FILLER TERMINATED BY "</COLUMN>", 
    STORE_NN_KJ ENCLOSED BY '<COLUMN NAME="THE_NAME">' AND '</COLUMN>', 
    STAFF_COUNT ENCLOSED BY '<COLUMN NAME="THE_COUNT">' AND '</COLUMN>' 
) 

Voici le fichier XML:
<?xml version='1.0' encoding='MS932' ?>
<RESULTS>
<ROW>
<COLUMN NAME="THE_CODE">777</COLUMN>
<COLUMN NAME="THE_NAME">CharlieOscarDelta</COLUMN>
<COLUMN NAME="THE_COUNT">24</COLUMN>
</ROW>
</RESULTS>

Voici le fichier XML avec des valeurs CDATA. Mon fichier de contrôle ne fonctionne pas avec elle ...:
<?xml version='1.0' encoding='MS932' ?>
<RESULTS>
<ROW>
<COLUMN NAME="THE_CODE"><![CDATA[777]]></COLUMN>
<COLUMN NAME="THE_NAME"><![CDATA[CharlieOscarDelta]]></COLUMN>
<COLUMN NAME="THE_COUNT"><![CDATA[24]]></COLUMN>
</ROW>
</RESULTS>

Répondre

0

Avez-vous essayé

STORE_NN_KJ "substr(substr(:STORE_NN_KJ,instr(:STORE_NN_KJ,'<![CDATA[')+9),0,instr(substr(:STORE_NN_KJ,instr(:STORE_NN_KJ,'<![CDATA[')+9),']]>'))" ENCLOSED BY '<COLUMN NAME="THE_NAME">' AND '</COLUMN>' 

EDIT On dirait que j'ai oublié a) .. Essayez ceci ..

+0

Bonjour Monsieur! Merci pour la réponse rapide. J'ai essayé votre code aujourd'hui, mais cela ne fonctionne pas. Il y a une erreur: 'SQL * Loader-350: Erreur de syntaxe à la ligne 9. Attend une spécification de colonne valide,", "ou") ", mot-clé trouvé inclus. – Godcode