oracle sqlplus执行sql语句字符集问题

  因为业务需要,现将一些包含中文的insert语句导入到oracle数据库中,由于数据量比较大,通过pl/sql*plus导入时非常慢(实测1.5M的文件大概执行20分钟),现在oracle服务器sqlplus下执行,报错如下:

ERROR:
ORA-01756: quoted string not properly terminated

  查询度娘说是字符集问题,随后查看数据库字符集

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

  oracle用户当前字符集

echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK

  是一致的,说明是导入的sql文件有问题,解决方法如下:

先将sql文件通过notepad++转换为UTF-8-BOM编码模式,然后再转成gb2312格式保存

然后通过UltraEdit打开刚刚保存的gb2312格式的文件

修改为gbk格式,然后再保存,重新导入,不报错了,而且速度非常快,1.5M文件5秒钟执行完成。

总结:

  utf-8文件不能直接转成gbk格式,需要将UTF-8格式文件改为gb2312格式,然后再转成gbk格式,否则中文乱码。

原文地址:https://www.cnblogs.com/chillax1314/p/9239500.html