今天一个客户打电话说,他们的数据库很多表存在XMLTYPE的字段,在做数据迁移的时候,使用expdp将数据导出,之后导入另一个数据库即出现乱码,使用了包括修改NLS_LANG等很多方法还是乱码。即使在单机环境下做测试,从本地导出再倒入本地也是乱码。
一.数据测试。
接到这个问题之后,我也在本机做了测试,创建表的代码如下:
CREATE TABLE TEST.T_XML
(
XML_TEST XMLTYPE
)
XMLTYPE XML_TEST STORE AS BINARY XML;
通过PL/SQL工具向这个表中加载一个包含中文的标准XML文件。
使用exp导出报不支持该类型,使用expdp顺利导出,对现有的表进行重命名,之后再次导入,查看该字段数据即是乱码。
二.问题解决。
google搜索了一些资料,发现是由expdp参数问题导致的,执行以下的命令导出数据库数据:
通过PL/SQL工具向这个表中加载一个包含中文的标准XML文件。
使用exp导出报不支持该类型,使用expdp顺利导出,对现有的表进行重命名,之后再次导入,查看该字段数据即是乱码。
二.问题解决。
google搜索了一些资料,发现是由expdp参数问题导致的,执行以下的命令导出数据库数据:
C:\Users\LIUBINGLIN>expdp 's/s as sysdba' directory=dump_dir dumpfile=test2.dmp
schemas=test
DATA_OPTIONS=XML_CLOBS
导出的时候增加红色加粗的参数。
执行以下的命令导入数据:
导出的时候增加红色加粗的参数。
执行以下的命令导入数据:
C:\Users\LIUBINGLIN>impdp 's/s as sysdba' directory=dump_dir dumpfile=test2.dmp
schemas=test
导入之后数据再没有乱码。
执行expdp help=y查看DATA_OPTIONS选项值。
参考资料: http://www.qnr.cn/pc/ora/study/201204/762690_3.html
--end--
导入之后数据再没有乱码。
执行expdp help=y查看DATA_OPTIONS选项值。
DATA_OPTIONS
数据层选项标记。
有效的关键字值为: XML_CLOBS。
参考资料: http://www.qnr.cn/pc/ora/study/201204/762690_3.html
--end--
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23135684/viewspace-735906/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23135684/viewspace-735906/