2017-04-14 43 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

相關問題