2013-03-06 3 views
24

は私がWindowsのファイルにoracle sql resultを出力するには?

select * from users 
save D:\test.sql create; 

を試みたが、SQLは、プラスのウィンドウでOracle SQLで「何の適切な終了」 方法を指定するには、パスを私に与えていませんか?これは、SQL * Plusは実行したディレクトリにmyoutputfile.txtを作成することを

spool myoutputfile.txt 
select * from users; 
spool off; 

注:

答えて

46

は、スプールを使用してください。

あなたはSQLファイルからこれを実行する必要がある場合(例えば、 "tmp.sql")はSQLPlusをが起動し、 "output.txtと" という名前のファイルに出力:

tmp.sql:

select * from users; 

コマンド:

sqlplus -s username/[email protected] @tmp.sql > output.txt 

マインドあなたは、私が今私の前にOracleインスタンスを持っていないので、あなたは私がから書いたものをデバッグするために、あなた自身の仕事の一部を行うために必要がある場合がありますメモリ。

マークに非常に類似し
+0

ありがとうが、スプールファイルmyoutputfile.txtがどこにあるか私が尋ねることができます見つける?また、ユーザーがスプールを実行する権限を持っていないのはどうですか? – Dreamer

+0

また、特にWindowsでは出力ファイルのパス/フォルダをどのように指定できますか? – Dreamer

+2

スプールの出力先となるディレクトリから 'sqlplus.exe'を実行する以外は、スプールがどこに書き込まれるか指定することはありませんでした。 – Marc

14

、唯一の違い私はそうのようなパラメータにスプールするだろうになるだろう。そして、

WHENEVER SQLERROR EXIT 1 
SET LINES 32000 
SET TERMOUT OFF ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF 
SET SERVEROUTPUT ON 

spool &1 

-- Code 

spool off 
exit 

そして、ちょうど回答をするために

sqlplus -s username/[email protected] @tmp.sql /tmp/output.txt 
+0

私は 'set pages 0'、' set trimspool on'などを追加するつもりだったが、それから質問が変わったので、別のものを追いかける必要があった!しかし、良い提案。 – Marc

+0

Johnさん、ありがとうございました。お使いのバージョンでは、きれいなSQL出力が返されました。 –

2

としてSQLPLUSを呼び出すために2もっと簡単に、保存したファイルを置くことができるフォルダを定義することもできます。

spool /home/admin/myoutputfile.txt 
    select * from table_name; 
    spool off; 

hatのみnanoまたはvi myoutputfile.txt、すべてのsqlトラックが表示されます。

希望はその助けに:)

2
spool "D:\test\test.txt" 

select 
    a.ename 
from 
    employee a 
inner join department b 
on 
( 
    a.dept_id = b.dept_id 
) 
; 
spool off 

このクエリはDでSQL結果をスプールします:\テスト\ test.txtの

関連する問題