我正在尝试将数据从Oracle表导出到csv文件。该表的列之一定义为CLOB数据类型,并且数据以多种语言存储。
例如,
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
答案 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