SQLPLUS在用英文以外的其他语言查找数据时写入csv文件
问题描述:
我试图将数据从Oracle表导出到csv文件。该表的一列定义为CLOB数据类型,数据以多种语言存储。SQLPLUS在用英文以外的其他语言查找数据时写入csv文件
例如,
create table test1
(col1 number,
col2 clob);
Insert into test1 values (1, '使用 Excel 数据挖掘外接程序执行购物篮分析');
select * from test1;
执行,并从SQL Developer的截图采取:
当我运行下面的脚本的SQLPlus
set echo off
set newpage none
set feedback off
set pages 0
spool C:\Users\venkat\Desktop\data.csv
select 'col1,col2' from dual;
select col1||',' || col2
from test1;
spool off;
中的数据文件看起来像这
COL1,COL2
1,¿¿¿Excel的¿¿¿¿¿¿¿¿¿¿¿¿¿¿
期待在这个论坛一些帮助。我想看看它在数据库中的数据。
编辑:道歉,我应该提到环境作为Windows。在此NLS语言参数这里
Select * from nls_database_parameters
where parameter IN ('NLS_LANGUAGE','NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
和的结果
更多信息说
NLS_LANGUAGE AMERICAN NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
答
必须设置NLS_LANG
环境变量,以便告诉SQL Plus使用什么字符编码;指定一个可以表示预期字符的字符编码。请参阅Server Fault上的“Running SQLPlus with bash causes wrong encoding”。
在bash,你会这样设置环境变量:
export NLS_LANG="AMERICAN_AMERICA.UTF8"
在Windows与cmd.exe
你会说
set NLS_LANG=AMERICAN_AMERICA.UTF8
您好亚历克斯,感谢您的回复,我真的无法设置NLS_LANG与登录到我的数据库用户后命令提示符上面的语句,它说> SP2-0735:未知的SET选项开始“NLS_LANG = A ...” – Venkat
你是什么意思,“无法设置”?您必须使用正确的shell语法来设置它,_before_运行SQLPlus。 – AlexP
我使用环境和NLS参数更新了OP,请检查一次。我得到> SP2-0735:从sqlplus执行上述设置语句时,开始“NLS_LANG = A ...”的未知SET选项 – Venkat