テキストデータを取り込むには、SQL*Loaderというユーティリティが用意されていますが、逆のSQL*Saverなどというものは用意されていません。
CSV形式のテキストファイルにデータを出力したい場合は、PL/SQLで外部ファイルに書き出す方法やMicroSoft ACCESS などのソフトからリンクし取り出す方法が考えられます。
MicroSoft ACCESSからリンクする方法は、少量のデータの場合はお手軽で良いのですが、数万件オーダのデータを扱う場合、テーブルを表示するだけで時間が掛かったりと一長一短であったりします。
今回は、SQL*PlusのSPOOL機能を使ってCSV形式のテキストファイルに出力する方法でやって見ましょう。
SQL*Plusのコンソールより以下のコマンドを実行します。
SQL> set echo off SQL> set linesize 1000 SQL> set pagesize 0 SQL> set trimspool on SQL> set colsep ',' SQL> spool c:\work.csv SQL> select * from XXX : : : SQL> spool off
解説すると以下のようになります。
set echo off | エコーをOFFします。 デフォルトではOFFですが念のため。 |
set linesize 1000 | 1行のサイズを設定します。 データより長ければ問題ありません。 私はいつも適当に1000を設定します。 |
set pagesize 0 | ページ区切りをなくします。 |
set trimspool on | 行末のスペースを無くします。 |
set colsep ‘,’ | 項目区切り文字を設定 この例では「,」 |
spool c:\work.csv | 出力先のファイルを指定 この例では「c:\work.csv」 |
select * from XXX | 出力対象のデータをselectし、 取得結果をスプール |
: | |
: | (出力中) |
: | |
spool off | スプールを終了しファイルを閉じる |