【问题标题】:Oracle SQL*Loader getting CDATA valuesOracle SQL*Loader 获取 CDATA 值
【发布时间】:2010-10-15 16:24:11
【问题描述】:

有人知道怎么做吗?我知道有一种更好的方法可以在不使用 SQL*Loader 的情况下将 XML 数据加载到 Oracle,但我只是好奇如何使用它来完成。我已经有一个可以将 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' ?>
<RESULTS>
<ROW>
<COLUMN NAME="THE_CODE">777</COLUMN>
<COLUMN NAME="THE_NAME">CharlieOscarDelta</COLUMN>
<COLUMN NAME="THE_COUNT">24</COLUMN>
</ROW>
</RESULTS>

这是带有 CDATA 值的 XML 文件。我的控制文件将无法运行...:
<?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>

【问题讨论】:

    标签: sql xml oracle loader sql-loader


    【解决方案1】:

    你试过了吗

    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>'
    

    编辑 看起来我忘记了)..试试这个..

    【讨论】:

    • 您好,先生!感谢您的及时回复。我今天尝试了您的代码,但它不起作用。出现错误:SQL*Loader-350: Syntax error at line 9. Expecting valid column specification, "," or ")", found keyword enclosed.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2012-05-06
    • 2021-06-15
    相关资源
    最近更新 更多