web-dev-qa-db-ja.com

Oracle SQLの結果をWindowsのファイルに出力する方法は?

私は試した

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

しかし、SQL plusは「適切に終了していません」と表示しますWindowsのOracle SQLでパスを指定するにはどうすればよいですか?

28
Dreamer

スプールを使用します。

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

これにより、SQL * Plusを実行したディレクトリにmyoutputfile.txtが作成されることに注意してください。

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

tmp.sql:

select * from users;

コマンド:

sqlplus -s username/password@sid @tmp.sql > output.txt

気を付けてください、今は目の前にOracleインスタンスがありません。そのため、メモリから記述した内容をデバッグするには、独自の作業を行う必要があります。

50
Marc

Marcと非常によく似ていますが、私が作るのは、次のようなパラメータにスプールすることだけです。

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を次のように呼び出します。

sqlplus -s username/password@sid @tmp.sql /tmp/output.txt
14
John D
spool "D:\test\test.txt"

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

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

3
Shine

answer 2をもっと簡単にするために、保存したファイルを置くことができるフォルダーを定義することもできます

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

その後、nanoまたはvi myoutputfile.txtのみを使用すると、すべてのSQLトラックが表示されます。

希望はその助けです:)

2
Mohamed Dernoun