PostgreSQLスキルアップノート(自己啓発のための個人サイト)

pg_bulkloadの実用的な実施例


【一覧に戻る】

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ pg_bulkloadの簡単な例
■■■■
■■■■
■■■■ 2012/07
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
                                                                   (C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★このページはそのままカット&ペーストで実行して試すことができます。


【pg_bulkloadバージョン】

  Release Name: 3.1.1
  Notes: Release for PostgreSQL9.1 

【公式サイト】

  pgFoundry→●[公式サイト]

【参考記事】

  pg_bulkload ホームページ→●[記事]



■1■ 今回の条件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


・入力ファイル        テーブル名.txt
・入力ファイルの形式  csvファイル(カンマ区切り、文字列ダブルクォート囲み)
・ログファイル        テーブル名.log

・制御ファイル        load_comma_double.ctl



■2■ テスト用テーブル作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【□】 定義の作成

 drop table if exists tbl01;
 create table tbl01(c1 numeric(10),c2 timestamp,c3 varchar(10),c4_biko text);

【□】 データの作成

  vi tbl01.txt

------------------------
0001,2012-07-01 23:59:59,"aaaaaaaaaa","基本形"
,2012-07-02 12:30:59,"bbbbbbbbbb","数字がNULL"
0003,2012-07-02 12:30:59,,"文字c3がNULL"
0004,2012-07-02 12:30:59,"","文字c3が空文字"
0005,,"bbbbbbbbbb","日付がNULL"
0006,,"aa\"bb","エスケープ文字L"
-------------------------


【□】 cat -T load1.txt



■3■ ロード用制御ファイル作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【□】 vi load_comma_double.ctl

--------------------
# TRUNCATE = YES
TYPE = CSV
DELIMITER = ","
QUOTE = "\""
ESCAPE = \
--------------------



■4■ ロードの実行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

シェルスクリプトなどにそのまま組み込めるように、シェル変数にテーブル名
をセットしてから実行。

【□】 

TBNM=tbl01
pg_bulkload load_comma_double.ctl -i $TBNM.txt -O $TBNM -l $TBNM.log
unset TBNM


■5■ 確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


【□】 select * from tbl01;


出力結果例

postgres=# select * from tbl01;
 c1 |         c2          |     c3     |           c4_biko
----+---------------------+------------+-----------------------------
  1 | 2012-07-01 23:59:59 | aaaaaaaaaa | 基本形
    | 2012-07-02 12:30:59 | bbbbbbbbbb | 数字がNULL
  3 | 2012-07-02 12:30:59 |            | 文字c3がNULL
  4 | 2012-07-02 12:30:59 |            | 文字c3が空文字
  5 |                     | bbbbbbbbbb | 日付がNULL
  6 |                     | aa"bb      | エスケープ文字により"を格納
(6 rows)






以上 
inserted by FC2 system