Oracle SQL * Loader получает значения CDATA - PullRequest
1 голос
/ 26 марта 2009

Кто-нибудь знает, как это сделать? Я знаю, что есть лучший способ загрузки XML-данных в Oracle без использования SQL * Loader, но мне просто любопытно, как это сделать, используя его. У меня уже есть код, который может загружать данные XML в БД, однако он не запустится, если в файле XML есть значения, содержащие CDATA ...

Ниже приведен код контрольного файла, который работает, если значения не являются 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>'  
)

Вот файл XML:
<?xml version='1.0' encoding='MS932' ?><br> <RESULTS><br> <ROW><br> <COLUMN NAME="THE_CODE">777</COLUMN><br> <COLUMN NAME="THE_NAME">CharlieOscarDelta</COLUMN><br> <COLUMN NAME="THE_COUNT">24</COLUMN><br> </ROW><br> </RESULTS>

Вот файл XML со значениями CDATA. Мой контрольный файл не будет работать с ним ...:
<?xml version='1.0' encoding='MS932' ?><br> <RESULTS><br> <ROW><br> <COLUMN NAME="THE_CODE"><![CDATA[777]]></COLUMN><br> <COLUMN NAME="THE_NAME"><![CDATA[CharlieOscarDelta]]></COLUMN><br> <COLUMN NAME="THE_COUNT"><![CDATA[24]]></COLUMN><br> </ROW><br> </RESULTS>

1 Ответ

0 голосов
/ 26 марта 2009

вы пробовали

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 Похоже, я забыл) .. Попробуйте это ..

...