名前
pgx_loader --外部ファイルのデータをPostgreSQLのテーブルへ投入
概要
pgx_loader load -c command [options...]
pgx_loader recovery -t table
説明
pgx_loaderは、PostgreSQLのテーブルへの外部ファイルのデータ投入処理、および投入処理中に準備されたトランザクションのコミットまたはロールバックを行います。
loadモードは、commandで与えられたCOPY FROMコマンドを任意の並列度で実行することで、高速にデータ投入を行います。正常に完了した場合、以下の形式の標準出力を返します。
LOAD count
countはロードされた行数です。
recoveryモードは、データ投入中に準備されたトランザクションをコミットまたはロールバックします。
オプション
実行されたコマンドを標準出力に表示します。
実行されるCOPY FROMコマンドです。COPY FROMコマンドのFROM句にSTDINが指定された場合、入力データはpgx_loaderコマンドの標準入力から読み込まれます。この場合、外部ファイルまたは外部プログラムへのアクセス権限はデータベースサーバではなくローカルユーザーのものを使用するので、SQLのスーパーユーザー権限(またはpg_read_server_filesかpg_execute_server_programのいずれかのロールを持つこと)は必要ありません。
このオプションに指定するCOPY FROMコマンドのFORMATオプションにbinaryを選択することはできません。そのため、バイナリ形式の入力ファイルは指定できません。
このオプションに指定するCOPY FROMコマンドにFREEZEオプションを指定することはできません。
参照
COPY FROMコマンドの詳細は、“PostgreSQL Documentation”の“COPY”を参照してください。
COPY FROMコマンドで実行されるデータの変換、テーブルの作成およびインデックスの作成処理を、このオプションで指定した数のバックグラウンドワーカ(並列ワーカ)が同時実行します。このオプションは、複数プロセッサマシンで稼働するインスタンスに大量データを投入する時間を劇的に減らすことができます。
このオプションの最適値はサーバ、クライアント、ネットワークの構成に依存します。 要素にはCPUコア数やディスク構成も含まれます。 試行する最初の値としてサーバのCPUコア数を勧めます。当然ながらあまりに大きな値を使用すると、スラッシングやコンテキストスイッチのために性能が劣化することになります。
このオプションに指定可能な値は2から128です。デフォルトは2です。
指定されたテーブルのみについて、準備されたトランザクションを完了します。
pgx_loaderコマンドライン引数の使用方法を表示し、終了します。
以下のコマンドラインオプションは、データベース接続パラメータを制御します。
接続するデータベースの名前を指定します。指定されていない場合はPGDATABASE環境変数が使われます。 この変数も設定されていない場合は、オペレーティングシステムのユーザー名が使用されます。
データベースサーバが稼働しているマシンのホスト名を指定します。 この値がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。 デフォルトは、設定されていれば環境変数PGHOSTから取得されます。設定されていなければ、Unixドメインソケット接続とみなされます。
サーバが接続を監視するTCPポートもしくはローカルUnixドメインソケットファイルの拡張子を指定します。 デフォルトは、設定されている場合、環境変数PGPORTの値になります。設定されていなければ、デフォルト値は27500となります。
接続ユーザー名です。
パスワードの入力を促しません。 サーバがパスワード認証を必要とし、かつ、.pgpassファイルなどの他の方法が利用できない場合、接続試行は失敗します。 バッチジョブやスクリプトなどパスワードを入力するユーザーが存在しない場合にこのオプションは有用かもしれません。
データベースに接続する前に、pgx_loaderは強制的にパスワード入力を促します。 サーバがパスワード認証を要求する場合 pgx_loaderは自動的にパスワード入力を促しますので、これが重要になることはありません。 しかし、pgx_loaderは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。 こうした余計な接続試行を防ぐために -W の入力が有意となる場合もあります。
診断
0: 正常終了
0以外: 異常終了
0: 完了すべき準備されたトランザクションはありません
3: 準備されたトランザクションをコミットしました
4: 準備されたトランザクションをロールバックしました
上記以外: 異常終了
注意
pgx_loaderによって読み込まれるテーブルの行の順序は、ファイルの行の順序に一致しないことがあります。これは、ファイルの行が複数の並列ワーカによってテーブルに並列に挿入されているためです。
例
以下は、外部ファイル“/path/to/data.csv”(2000レコード)をテーブル“tbl”に並列度:3でロードする例です。
$ pgx_loader load -j 3 -c "COPY tbl FROM '/path/to/data.csv' WITH CSV" LOAD 2000
以下は、外部ファイル“/path/to/data.csv”(2000レコード)をpgx_loaderコマンドの標準入力から読み取り、テーブル“tbl”に並列度:3でロードする例です。
$ pgx_loader load -j 3 -c "COPY tbl FROM STDIN WITH CSV" < /path/to/data.csv LOAD 2000
以下は、テーブル“tbl”に関連する準備されたトランザクションを完了する例です。
$ pgx_loader recovery -t tbl