我正在使用下面的SQLPluse脚本将数据从Oracle导出到CSV文件。问题是我需要文件使用UTF-8及其当前的ANSI。如何使文件成为UTF-8?
SET colsep ';'
SET TERMOUT OFF
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 800
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET NUMW 50
column timecol new_value timestamp
column spool_extension new_value suffix
SELECT '.csv' spool_extension
FROM dual;
/
SPOOL C:\job_files\production\Data_Upload\TEST_1&&suffix
@@"C:\job_files\production\Data_Upload\TEST_1";
/
Exit;
无法从您的问题中完全理解您的意思,但是我认为问题是查询返回的数据包含UTF8数据,但您的输出未正确显示UTF8字符。
NLS_LANG环境变量控制包括SQL * Plus在内的Oracle工具/程序如何处理此类数据。
您通常会将变量设置为与数据库匹配的内容,例如
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
然后运行SQL * Plus。
您可以查询NLS_DATABASE_PARAMETERS
以查看数据库中有哪些语言设置,并像上面那样使用NLS_LANG变量进行试验。
NLS_LANG的值格式为LANGUAGE_COUNTRY.CHARSET
。