迁移数据时保留特殊字符

时间:2017-03-01 12:00:02

标签: sql oracle oracle11g clob

我使用以下代码从源遗留数据库中提取数据并放入目标11g数据库中的CLOB列

RTRIM (  
            XMLAGG (XMLELEMENT (  
                       e,  
                       REPLACE (  
                          REGEXP_REPLACE (  
                             REPLACE (prod_desc, CHR (10), '~~~'),  
                             '[[:cntrl:]]'),  
                          '~~~',  
                          CHR (10)),  
                       CHR (10)) ORDER BY prod_date DESC).EXTRACT ('//text()').getclobval (),  
            CHR (10))  

prod_desc列有'<' ,'>' '&安培;'和其他特殊字符分别被< >&取代。

即使我将数据从源迁移到目标,我如何保留上述值?

由于

1 个答案:

答案 0 :(得分:1)

这是Oracle XML工具的副作用。

您可以通过以下方式撤消它:

SQL> SELECT UTL_I18N.UNESCAPE_REFERENCE(RTRIM(XMLAGG(XMLELEMENT(E,'>')))) AS XML FROM dual;
XML
--------------------------------------------------------------------------------
<E>></E>

<强> VS

SQL> SELECT RTRIM(XMLAGG(XMLELEMENT(E,'>'))) AS XML FROM dual;
XML
--------------------------------------------------------------------------------
<E>&gt;</E>