Oracle导出导入问题

时间:2014-05-22 07:38:31

标签: oracle import oracle11g export

我想请求您在具有不同字符集的数据库之间的数据导出/导入方面提供帮助。我们要导出的数据库是:

WE8ISO8859P1 / NCHAR AL16UTF16

要导入的数据库是:

UTF8 / UTF8

我尝试使用不同的NLS_LANG设置但没有成功(见下文)。我只是在导入时没有收到任何错误:

imp test/test@test file=mig_test.expdat log=imp.log

Import: Release 10.2.0.1.0 - Production on Thu May 22 08:54:36 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V10.02.01 via conventional path
import done in WE8ISO8859P1 character set and UTF8 NCHAR character set
import server uses UTF8 character set (possible charset conversion)
export client uses UTF8 character set (possible charset conversion)
export server uses AL16UTF16 NCHAR character set (possible ncharset conversion)

什么都没有导入。感谢您的评论。

1 个答案:

答案 0 :(得分:1)

第1步:导出

将NLS_LANG设置为AMERICAN_AMERICA.WE8ISO8859P1导出。 这将创建一个包含WE8ISO8859P1数据的导出文件。

第2步:导入

将NLS_LANG设置为AMERICAN_AMERICA.WE8MSWIN1252导入 WE8MSWIN1252代码插入到数据库中,在UTF8数据库中插入数据时转换为UTF8。

将NLS_LANG设置为AMERICAN_AMERICA.UTF8导入 转换为UTF8由导入工具完成,UTF8代码插入数据库

略偏离主题1

您正在使用旧的导入和导出工具。你真的应该使用datapump(impdp,expdp)。与旧的导入/导出工具相比,它是一种更新,更快,更灵活的替代方案。 http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php

稍微偏离主题2

不要使用名为UTF8的字符集作为数据库字符集,除非与8.1.7及更早版本中的Oracle数据库客户端和服务器兼容,或者除非应用程序供应商明确要求,否则不需要。尽管名称非常相似,但UTF8并不是Unicode编码UTF-8的正确实现。如果在预期使用UTF-8处理的情况下使用UTF8字符集,则可能会发生数据丢失和安全问题。对于Web相关数据尤其如此,例如XML和URL地址。

Oracle建议将AL32UTF8用作数据库字符集。 AL32UTF8是Oracle标准的UTF-8编码的Oracle名称。