2008-08-26 16 views
3

私はOracleを実行しており、データベースからいくつかの結果を取得するクエリを持っています。結果をテキストファイルとして書きたいと思います。これをどうやってやりますか?Oracleがファイルに書き込む

私の推奨する方法は、UTL_FILEを使用することです。どのようにこれを行う方法の例がありますか?あなたは SQLPLUSあなたはスプールコマンドを使用することができますから、クエリを実行している場合

答えて

3

PL/SQLを使用している場合はUTL_FILEパッケージを使用できますが、sql + spoolの使用との違いは、ファイルがサーバー・ファイル・システムに書き込まれていることです。 UTL_FILEにはいくつかの制限があるため、サーバー側でJavaストアド・プロシージャを使用する方法があります。

1

:セッション内のスプールコマンドを実行した後

 
spool /tmp/test.spool 

を、すべての出力は、SQLPLUSコンソールに送信だけでなく、さ/tmp/test.spoolテキストファイル。

2

は、SQL Plusを使用している場合は、同じくらい簡単です:\ tempに\アウト:この3文は、ファイルcへの出力クエリの結果を "USERS SELECT * FROM" になる

 
SQL> spool c:\temp\out.txt 
SQL> SELECT * FROM USERS; 
SQL> spool off 

。 TXT。

このクエリは、Oracleの文字列操作関数を使用して書式設定できます。

0

これは(それが実際のディレクトリにするだけの参照を作成しない名前のディレクトリ・パスをマッピングを容易にするために、CREATE DIRECTORYとの組み合わせでいくつかの簡単な例UTL_FILE example

2

使用UTL_FILEでの合理的なチュートリアルのようですそのように


    create directory logfile as 'd:\logfile'; -- must have priv to do this 

declare 
    vFile utl_file.file_type; 
begin 
    vFile := utl_file.fopen(logfile ,'syslog','w'); -- w is write. This returns file handle 
    utl_file.put(vFile,'Start Logfile'); -- note use of file handle vFile 
    utl_file.fclose(vFile); -- note use of file handle vFile 
end; 

例)それが最初に作成されていることを確認します

関連する問題