当找到其他语言的数据时,SQLPLUS会将¿¿

时间:2017-04-14 22:21:35

标签: csv multilingual

我正在尝试将数据从Oracle表导出到csv文件。该表的列之一定义为CLOB数据类型,并且数据以多种语言存储。

例如,

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 个答案:

答案 0 :(得分:1)

您必须设置NLS_LANG环境变量才能告诉SQL Plus要使用的字符编码;指定一个可以表示预期字符的字符编码。例如,参见" Running SQL Plus with bash causes wrong encoding"在Server Fault

在Bash中,您可以设置一个这样的环境变量:

 export NLS_LANG="AMERICAN_AMERICA.UTF8"

cmd.exe的Windows上,您会说

 set NLS_LANG=AMERICAN_AMERICA.UTF8