Oracle

來自 Sqlplus 的壓縮假離線文件

  • January 2, 2020

我有在 Oracle SQL Developer 中執行的腳本,然後將結果作為 csv 導出到我的電腦。我現在開始使用帶有 .bat 的 sqlplus 來執行我的腳本並將結果假離線到我的電腦上。但我注意到從 sqlplus 導出的文件是從 SQL Developer 導出的文件的兩倍。文件的內容/結果完全相同。這是我的名為 oracle_sql.sql 的 sql 文件

set embedded on;
set pagesize 0;
set colsep ',';
set echo off;
set feedback off;
set linesize 1000;
set trimspool on;
set headsep off;
set termout off;
set heading on;
set und off;
spool mytable.csv
select item, item_desc
from mytable;
spool off

這是我的 .bat 文件程式碼

@echo off
sqlplus jasons/jasons@localhost @oracle_sql.sql

我是否需要在我的 sql 文件中有一個我不知道的額外設置?

這是因為 set linesize 1000 子句。那就是使假離線文件中的所有行都為 1000 行長,即使沒有這樣的數據。

從乾淨的 SQL sqlplus 會話中嘗試此操作:

set linesize 1000
spool test.txt
select * from dual;
spool off
exit

然後,返回 shell 並使用任何文本編輯器打開 test.txt,移動到屬於 SQL 查詢結果的行(而不是您編寫查詢的提示行)並檢查它的長度。

這 3 行將是 1000 字節長。

引用自:https://dba.stackexchange.com/questions/101128