迁移数据时保留特殊字符

Preserve Special Charcters While Migrating Data

我正在使用以下代码从源遗留数据库中提取数据并放入目标 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 列有 '<' 、 '>' '&' 和其他特殊字符,这些字符分别被替换为 &lt; &gt;&amp;

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

谢谢

这是 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>