导出客户机使用 US7ASCII 字符集 (可能的字符集转换)
导出服务器使用 UTF8 NCHAR 字符集 (可能的 ncharset 转换)
US7ASCII 是UTF8 的子集吧,这种情况下这个dmp文件已经产生数据丢失了吧,我怎么弄中文都是乱码了吧。
3 个解决方案
#1
看下imp 日志是怎么说的?
检查2个数据库的字符集看看..
SQL>select userenv(‘language’) from dual;
AMERICAN _ AMERICA. ZHS16GBK
可以参考下blog:
Oracle 字符集的查看和修改
http://blog.csdn.net/tianlesoftware/archive/2009/12/02/4915223.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
#2
导入的时候,dmp文件只要是导入服务端字符集的子集就没问题.
但是如果从服务器导出时,客户端与服务端字符集不兼容的话,那么dmp文件就已经是乱码了,再导入肯定是乱码.
但是如果从服务器导出时,客户端与服务端字符集不兼容的话,那么dmp文件就已经是乱码了,再导入肯定是乱码.
#3
1. 按正常方法把原数据库实例的用户数据导出到一个文件中;
2. 使用SQLPLUS连接到目的数据库实例;
3. 使用select * from V$NLS_PARAMETERS查看当前数据库实例的字符集;
4. 断开连接;
5. 修改oracle客户端的注册表中的字符集为原数据库实例的字符集(SIMPLIFIED CHINESE_CHINA.ZHS16GBK);
6. 连接到目的数据库实例;
7. 使用create database character set 原数据库实例的字符集(ZHS16GBK);
8. 开始导入数据到目的数据库实例的用户中;
9. 使用create database character set “目的数据库实例的字符集(US7ASCII)”;
10.修改oracle客户端的注册表中的字符集为目的数据库实例的字符集(AMERICAN_AMERICA.US7ASCII);
2. 使用SQLPLUS连接到目的数据库实例;
3. 使用select * from V$NLS_PARAMETERS查看当前数据库实例的字符集;
4. 断开连接;
5. 修改oracle客户端的注册表中的字符集为原数据库实例的字符集(SIMPLIFIED CHINESE_CHINA.ZHS16GBK);
6. 连接到目的数据库实例;
7. 使用create database character set 原数据库实例的字符集(ZHS16GBK);
8. 开始导入数据到目的数据库实例的用户中;
9. 使用create database character set “目的数据库实例的字符集(US7ASCII)”;
10.修改oracle客户端的注册表中的字符集为目的数据库实例的字符集(AMERICAN_AMERICA.US7ASCII);
#1
看下imp 日志是怎么说的?
检查2个数据库的字符集看看..
SQL>select userenv(‘language’) from dual;
AMERICAN _ AMERICA. ZHS16GBK
可以参考下blog:
Oracle 字符集的查看和修改
http://blog.csdn.net/tianlesoftware/archive/2009/12/02/4915223.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
#2
导入的时候,dmp文件只要是导入服务端字符集的子集就没问题.
但是如果从服务器导出时,客户端与服务端字符集不兼容的话,那么dmp文件就已经是乱码了,再导入肯定是乱码.
但是如果从服务器导出时,客户端与服务端字符集不兼容的话,那么dmp文件就已经是乱码了,再导入肯定是乱码.
#3
1. 按正常方法把原数据库实例的用户数据导出到一个文件中;
2. 使用SQLPLUS连接到目的数据库实例;
3. 使用select * from V$NLS_PARAMETERS查看当前数据库实例的字符集;
4. 断开连接;
5. 修改oracle客户端的注册表中的字符集为原数据库实例的字符集(SIMPLIFIED CHINESE_CHINA.ZHS16GBK);
6. 连接到目的数据库实例;
7. 使用create database character set 原数据库实例的字符集(ZHS16GBK);
8. 开始导入数据到目的数据库实例的用户中;
9. 使用create database character set “目的数据库实例的字符集(US7ASCII)”;
10.修改oracle客户端的注册表中的字符集为目的数据库实例的字符集(AMERICAN_AMERICA.US7ASCII);
2. 使用SQLPLUS连接到目的数据库实例;
3. 使用select * from V$NLS_PARAMETERS查看当前数据库实例的字符集;
4. 断开连接;
5. 修改oracle客户端的注册表中的字符集为原数据库实例的字符集(SIMPLIFIED CHINESE_CHINA.ZHS16GBK);
6. 连接到目的数据库实例;
7. 使用create database character set 原数据库实例的字符集(ZHS16GBK);
8. 开始导入数据到目的数据库实例的用户中;
9. 使用create database character set “目的数据库实例的字符集(US7ASCII)”;
10.修改oracle客户端的注册表中的字符集为目的数据库实例的字符集(AMERICAN_AMERICA.US7ASCII);