English


pg_bulkload ホームページへようこそ


pg_bulkload は PostgreSQL 向けの高速データロードユーティリティです。

pg_bulkload プロジェクトは NTT OSS センタから PostgreSQL のコミュニティへ貢献するものとして pgFoundry に登録されているプロジェクトの一つです。

pgFoundry のページはこちらです: http://pgfoundry.org/projects/pgbulkload
ここでダウンロードドキュメントの入手、バグレポート、メーリングリストの閲覧・購読などが行えます。

詳細なドキュメントは こちらから入手可能です。 日本語ドキュメントは「ランゲージ」で"Japanese" を選択し、"Go"を押すと表示されます。

Here is an English page.


目次


README

pg_bulkload - 高速データローダ

はじめに

pg_bulkloadは一定の制約条件の下で大量のデータを高速にロードするためのプログラムです。

大量のデータを投入するような状況では、細かなチェックは省いてでもいいからとにかく 高速にデータをロードしたいという場面があります。たとえば、あるデータベースに格納 されている情報を別のデータベースへ移送するような状況や、これから投入しようとする データの整合性がすでに別のツールで保証されているような状況がこれにあたります。 このような状況を想定して pg_bulkload は開発されました。 したがって、整合性を確認できていないデータのロードに対して、 pg_bulkload の使用 は適していません。この場合にはPostgreSQLがデータロードのためにもともと用意して いる COPY コマンドの利用をお勧めします。 注意点、使用方法を十分に理解した上で、pg_bulkload をご利用ください。

構成

pg_bulkloadを利用するユーザが直接扱うプログラムは以下の二つです。

  1. pg_bulkload
  2. データのロードを行うために呼び出すプログラムです。内部でpg_bulkload() ユーザ定義 関数を呼び出して、PostgreSQLサーバ内で実際のロード処理を行います。pg_bulkload() ユーザ定義関数は、pg_bulkloadのインストール時に作成されます。

  3. postgresql スクリプト
  4. pg_ctlコマンドのラッパコマンドで、PostgreSQLサーバを起動・停止するプログラムです。 postgresqlスクリプトの内部でpg_ctlコマンドを呼び出しています。 また、pg_bulkloadによるロード中にサーバがダウンした場合、pg_bulkloadコマンドを呼 び出して自動的に独自のリカバリを行う機能を持っています。 pg_bulkload利用環境下では、必ずこのpostgresqlスクリプトを使用してください。

    下記の"注意点"を必ず読んでください。特に、

    もしくは

インストール

  1. 環境
  2. pg_bulkload をインストールする前に以下を実行しているものとします。

  3. インストール手順
  4. インストール手順は次の通りです。インストール先のディレクトリへのアクセス権限は正しく与えられているものとします。
    
    $ cd [directory where postgresql-8.2or3.X.tar.gz is untared]/contrib/
    $ tar zxvf pg_bulkload-2.3.X.tar.gz
    $ cd pg_bulkload
    $ make
    $ make install
    $ mkdir $PGDATA/pg_bulkload
    $ postgresql start
    $ psql -f $PGHOME/share/contrib/pg_bulkload.sql database_name
    

使い方

次の 3ステップにより、pg_bulkload でロードすることが可能です。

  1. ロードに関する設定を記述する制御ファイル "sample_csv.ctl" もしくは "sample_bin.ctl" を編集します。ロード対象のテーブル名、入力ファイルの絶対パスなどを指定します。
  2. $PGDATA/pg_bulkload ディレクトリが存在することを確認してください。そのディレクトリにはロードステータスファイルが作成されます。
  3. 制御ファイルを引数としてコマンドを実行します。引数の制御ファイルは相対パスで指定可能です。
    
    $ pg_bulkload sample_csv.ctl 
    

制御ファイル

次のオプションを指定可能です。pg_bulkload パッケージに含まれる sample_csv.ctl や sample_bin.ctl もあわせて参照してください。

CSV/固定長 フォーマット共通

CSV フォーマット

固定長フォーマット

Reminder

オプションツール : pg_timestamp_in

pg_bulkload に加えて、次のユーザ定義関数がタイムスタンプ文字列のパースのオーバヘッドをスキップするために提供されています。 これも pg_bulkload のパッケージに含まれています。

pg_timestamp_in

このユーザ定義関数は timestamp 型のデータを高速にロードします。 高速に読みこむための入力は、以下の19バイトの型式に限定されます。
2007-01-01 12:34:56

インストール

インストール手順は以下の通りです。インストール先のディレクトリへのアクセス権限は正しく与えられているものとします。


$ cd [directory where postgresql-8.2or3.X.tar.gz is untared]/contrib/
$ tar zxvf pg_bulkload-2.3.X.tar.gz
$ cd pg_bulkload
$ make
$ make install
$ postgresql start
$ psql -f $PGHOME/share/contrib/pg_timestamp.sql database_name

注意点

タイムゾーンを含む入力文字列は高速化の対象外です。 また、上記のフォーマットに合致しないものはPostgreSQLの書式変換ルーチンを通します。 この場合の処理速度は従来のものと同じか、もしくは遅くなります。

pg_timestamp_in は timestamp 型データを高速に読む機能を提供するものの、 通常使われる PostgreSQL の内部関数を置き換えます。 pg_timestampを登録すると、pg_bulkloadに限らず、timestamp型を利用する全ての処理 はこの関数を使うことになります。すなわち、COPYINSERTでもこの関数を利用します。 この影響を避けるためには、pg_timestamp_in をロードの時だけ利用し、 通常時はアンインストールするなどの対応が必要です。

作者

NTT OSS センタ
Copyright(C) 2007-2008 日本電信電話株式会社


性能測定結果

概要

結果






Powered By GForge Collaborative Development Environment