刚刚碰到一个问题,对方的服务器环境为linux,按照一般的sqlldr导入数据,通过plsql查询时发现为问号和乱码。
通过数据库的SELECT * FROM V$NLS_PARAMETERS,查出数据库的字符编码NLS_CHARACTERSET为AMERICAN_AMERICA.ZHS16GBK,但是NLS_NCHAR_CHARACTERSET为AL16UTF16。
于是,在服务器上修改oracle和root用户的.bash_profile和profile,添加字符编码设定export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
在cmd中输入regedit,找到本机的oracle NLS_CHARACTERSET,我的地址为HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/NLS_LANG,将其改为AMERICAN_AMERICA.ZHS16GBK。
将导入的数据文件csv通过工具,我的是UltraEdit,另存为ANSI,在控制文件ctl 中加入语言控制代码 CHARACTERSET ZHS16GBK。
接下来导入数据,应该就是可以的了。(记得改完后plsql要重新打开过)
本文介绍了解决Oracle数据库导入CSV文件出现乱码的问题。通过调整服务器环境字符编码、修改.bash_profile、设置NLS_LANG环境变量及使用正确字符集等方式最终解决了乱码问题。

266

被折叠的 条评论
为什么被折叠?



