解决PL/SQL导入乱码问题
导入dmp文件乱码有两种情况
1.注释和初始化数据都乱码,跟字符集有关 可先新增环境变量试一下
2.注释乱码,但是初始化数据不乱码
3.如果导出dmp文件与本地字符集不符,需要更改下文中也会写道
最重要的一点导出dmp文件的字符集要和本地导入的字符集一致 才不会将导入数据变成乱码
1. 注释和初始化数据都乱码
- 查询oracle server端的字符集
select userenv('language') from dual;
得到字符集
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
本地服务端的字符是gbk
- 查看任务注册表的字符集是否一致 用 win + r 输入regedit
查看
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1
中 NLS_LANG 的value值是多少
- 新增环境变量
新增环境变量后别忘了点击确定
2.注释乱码、初始化数据不乱码
这种情况。。。。。
咳咳咳
。。。。。没救了
导出用户重新给一份dmp文件,也会出现这种情况
原因是因为 当时建表导入的时候没指定nls_lang是乱的
导入用户在怎么改…字符集…注册表…环境变量都没有用
只能导出用户重新导出.sql文件,导入用户在重新导入就ok了
3.更改字符集
先win + r 然后敲击cmd
- 第一步 sqlplus /nolog 先连接数据库
接下来依次敲击命令 有些命令会费时间运行
sqlplus /nolog
SQL> connect sys/oracle as sysdba
SQL> startup
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use AL32UTF8;
SQL> shutdown immediate;
SQL> startup
第一步 先连接数据库
第二步 startup 如果Oracle是运行可以不敲
第三步
第四步
第五步 startup 重启
这样就完成对Oracle字符集的更改