如何将表中的数据假脱机到包含Unicode字符的文件?
我有一个sql文件,我从SQL * Plus屏幕执行,其内容是:
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET PAGESIZE 0
SPOOL STREET_POINT_THR.BQSV
SELECT GEOX||'`'||GEOY||'`'||UNICODE_DESC||'`'||ASCII_DESC
FROM GEO.STREET_POINTS;
SPOOL OFF
答案 0 :(得分:2)
使用正确的设置,您的脚本可以与SQL * Plus一起使用。以下是我测试它的方法:
AMERICAN_ENGLISH.UTF8
。虽然SQL * Plus的DOS窗口不会显示所有unicode字符,但它们将被正确假脱机到文件中。现在为剧本:
SQL> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------ ------
NLS_CHARACTERSET UTF8
SQL> create table street_points (data varchar2(10));
Table created
SQL> INSERT INTO street_points VALUES (chr(53401)||chr(53398));
1 row inserted
这将插入俄语字符ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
使用正确的字符集(UTF-8)使用文本编辑器(在我的情况下为jEdit)打开的文件正确显示字符。
答案 1 :(得分:0)
我认为SQLPlus(至少在Windows上)不支持unicode。我刚刚在这里测试过它似乎不起作用。我不确定这里是否可以提及,但我自己的工具“Golden 6”确实支持unicode假脱机,尽管它只是Windows。请注意,您必须在spool命令之前使用“SET ENCODING [UNICODE | UTF-8 | ANSI] [NOBOM]”来选择正确的编码。
马克·福特(Mark Ford) 底栖软件编辑:正如文森特指出的那样,它正在发挥作用。请注意,创建的UTF-8文件没有BOM,但是是UTF-8文件。