2017-04-14 42 views
1

我试图将数据从Oracle表导出到csv文件。该表的一列定义为CLOB数据类型,数据以多种语言存储。SQLPLUS在用英文以外的其他语言查找数据时写入csv文件

例如,

create table test1 
(col1 number, 
col2 clob); 

Insert into test1 values (1, '使用 Excel 数据挖掘外接程序执行购物篮分析'); 

select * from test1; 

执行,并从SQL Developer的截图采取: image

当我运行下面的脚本的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

回答

1

必须设置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 
+0

您好亚历克斯,感谢您的回复,我真的无法设置NLS_LANG与登录到我的数据库用户后命令提示符上面的语句,它说> SP2-0735:未知的SET选项开始“NLS_LANG = A ...” – Venkat

+0

你是什么意思,“无法设置”?您必须使用正确的shell语法来设置它,_before_运行SQLPlus。 – AlexP

+0

我使用环境和NLS参数更新了OP,请检查一次。我得到> SP2-0735:从sqlplus执行上述设置语句时,开始“NLS_LANG = A ...”的未知SET选项 – Venkat

相关问题