web-dev-qa-db-ja.com

スプールコマンド:SQLステートメントをファイルに出力しない

クエリを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を使用しています。

ありがとうブルース

12
bnix

残念ながら、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の動作を模倣することが意図的な動作であることを示唆しています。クエリテキストを非表示にするには、@を指定してスクリプトを実行する必要があります。

24
Alex Poole
set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;
1
Walter Mitty

シェルスクリプトはsqlファイルを呼び出して実行します。スプール出力には、最初にSQLクエリがあり、その後にクエリ結果が続きました。

これは私の問題を解決しませんでした:

set echo off

これは私の問題を解決しました:

set verify off
1
mdabdullah

結果グリッグのエクスポートオプションを使用して、クエリ結果を直接エクスポートできます。このエクスポートには、エクスポートするためのさまざまなオプションがあります。これはうまくいくと思います。

0
Avrajit

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;
0
nikhil kodipaka