由於thatjeffsmith好心指出,厚福這個錯誤在下一個版本中得到解決。在此之前,您可以使用SQLcl(SQLDeveloper 4.1.2中包含的現代SQL * Plus和SQLDeveloper 4.1.2使用的SQL * Plus)與SED腳本一起完成所需的結果。
SQLcl位於:$ SQLDEV_HOME \的SQLDeveloper \ BIN \ SQL。 $ SQLDEV_HOME只是您安裝的SQLDeveloper版本的目錄。
在您的例子,要生成兩個獨立的輸出文件,A.TXT和B.txt,從一個單一的SQL文件。我下面提出的方法將要求將其分解爲兩個單獨的SQL文件:A.sql和B.sql。
A.sql:
set echo off
set feedback off
set termout off
select /*csv*/ * from A where rownum <= 1000;
B.sql:
set echo off
set feedback off
set termout off
select /*csv*/ * from B where rownum <= 1000;
下面是我的一個名爲sed腳本的一個在線內容 「中刪除先空白line.sed」:
0,/^$/{//d}
「0」定義以下命令塊只應用於第一行。
「/^$ /」定義了要匹配的正則表達式模式。 「^」是一行的開始,「$」是行標記的結尾,所以這種模式只匹配行,絕對沒有內容,沒有空格......沒有。如果要刪除可能包含空格(製表符,空格)的行,則可以嘗試以下SED命令:0,/^[[:space:]] * $/{// d}
「 // d「定義腳本將刪除找到的匹配模式。
有關此SED腳本的更多詳細信息,請參閱:https://unix.stackexchange.com/questions/75424/remove-only-the-first-blank-line-sed。
因此,要從每個SQL文件(A.sql和B.sql)的輸出中刪除第一個空白行,它們必須分別使用SQLcl執行,然後必須通過以下SED腳本從SQLcl輸出輸出如下:
$SQLDEV_HOME\sqldeveloper\bin\sql -s scott/[email protected] @A.sql | sed -f remove-first-blank-line.sed > A.txt
$SQLDEV_HOME\sqldeveloper\bin\sql -s scott/[email protected] @B.sql | sed -f remove-first-blank-line.sed > B.txt
的「-s」是「沉默」選項SQLcl(SQL * Plus一樣),從而確保沒有數據庫的登錄信息輸出到cluttter你的輸出文件。
「|」字符管道通過給定的SED腳本從SQLcl輸出。
「>」將SED腳本的所有輸出寫入輸出文件「mysql.out」。如果您需要使用另一個SQL腳本將更多數據附加到同一文件,請使用「>>」,以便您可以將數據追加到文件而不是覆蓋文件。
注意:是的,你也可以直接使用命令行上的SED命令,但這往往需要在逃避,這取決於你的操作系統運行在不同方式的特殊字符。我發現當我將SED命令保存在名爲SED的簡短腳本文件中時,我更有可能在各種平臺(例如Linux和Windows)上重新使用我的SED腳本。
後處理可以。不幸的是,讓SQL * Plus輸出一個CSV文件似乎很難:http://stackoverflow.com/q/643137/238421。 –