クエリをCSVファイルに出力したいのですが、以下を小さなテストとして使用しています。
spool c:\test.csv
select /*csv*/ username, user_id, created from all_users;
spool off;
しかし、出力には最初の行として実際の選択文が含まれています
> select /*csv*/ username user_id created from all_users
USERNAME USER_ID CREATED
REPORT 52 11-Sep-13
WEBFOCUS 51 18-Sep-12
これを防ぐ方法はありますか?私はSET Heading Offを試してみたが、それができるかもしれないが、変わらなかった。スクリプトとして実行しているSQL Developerを使用しています。
ありがとうブルース
残念ながら、SQL Developerは、SQL * Plusでこれを解決する(と思われる)set echo off
コマンドを完全に尊重しません。
私がこれに対して見つけた唯一の回避策は、スクリプトとして実行していることを保存することです。 test.sql
で:
set echo off
spool c:\test.csv
select /*csv*/ username, user_id, created from all_users;
spool off;
そして、SQL Developerから、そのスクリプトの呼び出しのみを行います。
@test.sql
そして、それをスクリプト(F5)として実行します。
とにかく、スクリプトファイルとして保存することは、アドホッククエリ以外の場合、それほど苦労するべきではありません。スクリプトを開いて直接実行する代わりに@
を使用して実行するのは、ほんの少しの苦痛です。
SQL Developerフォーラム で少し検索したところ、同じソリューションが見つかりました。開発チームは、SQL * Plusの動作を模倣することが意図的な動作であることを示唆しています。クエリテキストを非表示にするには、@
を指定してスクリプトを実行する必要があります。
set echo off
spool c:\test.csv
select /*csv*/ username, user_id, created from all_users;
spool off;
シェルスクリプトはsqlファイルを呼び出して実行します。スプール出力には、最初にSQLクエリがあり、その後にクエリ結果が続きました。
これは私の問題を解決しませんでした:
set echo off
これは私の問題を解決しました:
set verify off
結果グリッグのエクスポートオプションを使用して、クエリ結果を直接エクスポートできます。このエクスポートには、エクスポートするためのさまざまなオプションがあります。これはうまくいくと思います。
TOADまたはSQL DEVELOPERでクエリを実行します
---select /*csv*/ username, user_id, created from all_users;
「C」ドライブに.SQL形式で保存します
--- x.sql
コマンドを実行する
---- set serveroutput on
spool y.csv
@c:\x.sql
spool off;