2009年5月27日水曜日

Oracle:sqplusでCSV出力したい。

テーブル名:カタログ

項目:物品コード,型式,品名,単価

のような表をCSV出力したい場合


1.まず、下記のような環境変数を設定。

SET LINESIZE 10000

→行のバイト数。決まりは無いが1行となるサイズを指定。

SET PAGESIZE 0

→ページの行数。

|
|カラム名
|------------
|値

|で示した単位で1ページになるので、0を指定した場合は「値」だけ出力される。

SET TRIMSPOOL ON

→ファイルへの行末のスペースをなくす。

SET FEEDBACK OFF

→件数などの結果を出さなくする。(xx row selectedとか)

SET TERMOUT OFF

→画面バッファに結果を送らない。

SPOOL test.csv

→抽出結果をtest.csvに吐く。

2.select文
select 物品コード||','||型式||','||品名||','||単価 from カタログ;

||でカラムとシングルクォーテーションでくくったコロンを連結する。

カラム間のコロンを入れる方法としては

set colsep ,

もあるが、ここではselect文の中に書くこととする。

3.スプールの終了とexit

SPOOL OFF
EXIT


4.まとめるとこう。

SET LINESIZE 10000
SET PAGESIZE 0
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET TERMOUT OFF
SPOOL test.csv

select 物品コード||','||型式||','||品名||','||単価 from カタログ;

SPOOL OFF
EXIT

1 件のコメント:

  1. あと、

    set echo off
    prompt 物品コード,物品コード,品名,単価

    は、加えたほうがいいかも。

    返信削除

フォロワー