テーブルを手っ取り早くCSV形式で出力する方法(SQL*Plus)

テキストデータを取り込むには、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 スプールを終了しファイルを閉じる

    このページに関して管理人にメッセージを送ることができます。

    誤字脱字など些細な事でも構いませんのでお知らせ頂けると幸いです。

    その他のお問い合わせは、お問い合わせフォームからお願いします。


    スパムメール対策のクイズです。正解した場合のみ送信できます。