web-dev-qa-db-ja.com

クエリを2回実行することなく、SQL開発者でクエリの結果をエクスポートする

クエリを2回実行する必要なしに、Oracle SQL Developerでクエリの結果をエクスポートする方法はありますか?ワークシートでSQLクエリを実行し、[結果セット]ウィンドウを右クリック-> [データのエクスポート]-> [テキスト]を選択すると、クエリがもう一度実行されます。

5

SQL Developer固有のコメント/「ヒント」がいくつかあります。たとえば、ステートメント(Ctrl-Enter)ではなくスクリプト(F5)として以下を実行する場合:

select /*csv*/ * from table;

初めて初めてCSV形式で結果を取得します。 SQL * Plusと同様に、出力をスプールすることもできます。したがって、以下のコードブロックをスクリプトとして実行し(行とF5を選択)、1つのパスで直接CSVを取得できます。

spool C:\Users\XYZ\Desktop\my.csv
select /*csv*/ * from table;
spool off

バージョン4.1以降では、上記のコメント/「ヒント」を使用する必要さえありません。次のことができます:

SET SQLFORMAT csv

次に、クエリをスクリプトとして実行します。

ここでの追加オプション: http://www.thatjeffsmith.com/archive/2012/05/formatting-query-results-to-csv-in-Oracle-sql-developer/

7
Balazs Papp

はい、しかしそれは高価です。すべての行をクライアントにフェッチすると、エクスポートはそのレコードセットをエクスポートに使用します。

数行の長期実行クエリである場合、大した問題ではありません。それが数百万以上のレコードの長時間実行クエリである場合は、JVMを使い果たしたり、ネットワークの担当者を混乱させたりする可能性があります。

私はこれについてもっと話します ここ

TL/DR;

グリッド内のデータセットの最後までスクロールします。すべての行が表示されたら(フェッチする必要がなくなります)、エクスポートを実行すると、データはそこから取得され、クエリが再度実行されます。

4
thatjeffsmith

Sqlplusを使用します。 SQL Developerでスクリプトを開発してから、sqlplusでロードします。

0
Gerard