迁移数据时保留特殊字符
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 列有 '<' 、 '>' '&' 和其他特殊字符,这些字符分别被替换为 <
>
、 &
。
即使我将数据从源迁移到目标,如何保留上述值?
谢谢
这是 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>></E>
我正在使用以下代码从源遗留数据库中提取数据并放入目标 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 列有 '<' 、 '>' '&' 和其他特殊字符,这些字符分别被替换为 <
>
、 &
。
即使我将数据从源迁移到目标,如何保留上述值?
谢谢
这是 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>></E>