生成的 sqlplus 文件中的不可读字符
Unreadable character in generated sqlplus file
我有一个 shell,其中一个命令行打开 sql 加上并调用一个 sql 文件
$ORACLE_HOME/bin/sqlplus id/psw @SQL_DIRECTORY/myfile.sql
我在这个文件中这样写:
spool myfile.csv
select 'column 01', ';', 'column 02' from dual;
select myColumn1, ';', mycolum2 from mytable
spool off
它工作得很好但是在每个 select 的第一列的第一行有一个特殊字符。
这是为什么?我怎样才能摆脱这个
谢谢
根据描述,您似乎有 login.sql
或 glogin.sql
user profile that is issuing set newpage 0
:
Sets the number of blank lines to be printed from the top of each page to the top title. A value of zero places a formfeed at the beginning of each page (including the first page) and clears the screen on most terminals. If you set NEWPAGE to NONE, SQL*Plus does not print a blank line or formfeed between the report pages.
在 Excel 中确实显示为不可打印的字符,在小方块中带有问号;在 Notepad++ 中,它似乎在反色中显示为 FF
;在某些编辑器中(例如 Vim)它显示为 ^L
。这是 ASCII form feed 字符,十进制 12 或 0xC。
您可以使用 set newpage none
重置它,或者使其与 set pagesize 0
无关,这样可以方便地删除列 headers 和分隔符。如果您还没有,您可能还想 set feedback off
。
具有对比设置的示例:
set newpage 0;
set feedback on;
set pagesize 100;
spool ctrl.csv
select 'head 1;head 2' from dual;
select sysdate, ';', systimestamp from dual;
spool off
^L'HEAD1;HEAD2'
-------------
head 1;head 2
1 row selected.
^LSYSDATE ' SYSTIMESTAMP
------------------- - ---------------------------------------------------------------------------
2015-09-16 15:45:42 ; 16-SEP-15 15.45.42.333627 +01:00
1 row selected.
和
set newpage none;
set feedback off;
set pagesize 0;
spool ctrl.csv
select 'head 1;head 2' from dual;
select sysdate, ';', systimestamp from dual;
spool off
head 1;head 2
2015-09-16 15:46:11 ; 16-SEP-15 15.46.11.274863 +01:00
我有一个 shell,其中一个命令行打开 sql 加上并调用一个 sql 文件
$ORACLE_HOME/bin/sqlplus id/psw @SQL_DIRECTORY/myfile.sql
我在这个文件中这样写:
spool myfile.csv
select 'column 01', ';', 'column 02' from dual;
select myColumn1, ';', mycolum2 from mytable
spool off
它工作得很好但是在每个 select 的第一列的第一行有一个特殊字符。
这是为什么?我怎样才能摆脱这个
谢谢
根据描述,您似乎有 login.sql
或 glogin.sql
user profile that is issuing set newpage 0
:
Sets the number of blank lines to be printed from the top of each page to the top title. A value of zero places a formfeed at the beginning of each page (including the first page) and clears the screen on most terminals. If you set NEWPAGE to NONE, SQL*Plus does not print a blank line or formfeed between the report pages.
在 Excel 中确实显示为不可打印的字符,在小方块中带有问号;在 Notepad++ 中,它似乎在反色中显示为 FF
;在某些编辑器中(例如 Vim)它显示为 ^L
。这是 ASCII form feed 字符,十进制 12 或 0xC。
您可以使用 set newpage none
重置它,或者使其与 set pagesize 0
无关,这样可以方便地删除列 headers 和分隔符。如果您还没有,您可能还想 set feedback off
。
具有对比设置的示例:
set newpage 0;
set feedback on;
set pagesize 100;
spool ctrl.csv
select 'head 1;head 2' from dual;
select sysdate, ';', systimestamp from dual;
spool off
^L'HEAD1;HEAD2'
-------------
head 1;head 2
1 row selected.
^LSYSDATE ' SYSTIMESTAMP
------------------- - ---------------------------------------------------------------------------
2015-09-16 15:45:42 ; 16-SEP-15 15.45.42.333627 +01:00
1 row selected.
和
set newpage none;
set feedback off;
set pagesize 0;
spool ctrl.csv
select 'head 1;head 2' from dual;
select sysdate, ';', systimestamp from dual;
spool off
head 1;head 2
2015-09-16 15:46:11 ; 16-SEP-15 15.46.11.274863 +01:00