S-JIS[2015-10-15] 変更履歴

Embulk PostgreSQL出力

EmbulkのPostgreSQLへの書き込みのメモ。


概要

PostgreSQLのテーブルへ書き込むにはembulk-output-postgresqlを使う。

このプラグインを使う為には、embulk-output-postgresqlプラグインインストールしておく必要がある。

$ embulk gem install embulk-output-postgresql

$ embulk gem list embulk-output-postgresql
2015-10-15 22:47:17.852 +0900: Embulk v0.7.5
embulk-output-postgresql (0.4.1)

以下のようなDDLで作ったPostgreSQLのテーブルにデータを入れる例。

create table embulk_example (
  id numeric primary key,
  account numeric,
  time timestamp,
  purchase date,
  comment text
);

config.yml:

in:
  
out:
  type: postgresql
  host: 192.168.1.1
  user: hishidama
  password: "password"
  database: hishidamadb
  table: embulk_example
  mode: insert_direct

オプション

オプション名 説明 ymlの記述例 デフォルト値
type  
  type: postgresql
(必須)
host DBのホスト名。
  host: 192.168.1.1
(必須)
port DBのポート番号。
  port: 5432
5432
user DBにログインするユーザー名。
  user: hishidama
(必須)
password DBにログインする為のパスワード。
  password: zzz
空文字列(パスワード無し)
database DB名。
  database: hishidamadb
(必須)
table テーブル名。
  table: embulk_example
(必須)
options JDBC接続情報のオプション。    
mode insert 一時テーブルを作ってそこに入れてから目的のテーブルへコピーする。
  mode: insert_direct
(必須)
insert_direct 目的のテーブルへ直接INSERTする。
truncate_insert テーブルをTRUNCATEする以外はモードinsertと同じ。(resume可)
merge 一時テーブルを作ってそこに入れてから目的のテーブルへコピーする。
同じキーのデータが既にあった場合は上書き更新する。
replace 一時テーブルを作ってそこに入れてから目的のテーブルをDROPし、目的のテーブル名にRENAMEする。

modeがreplaceの場合、一時テーブルを作って、それを目的のテーブル名にRENAMEする。
データ型は元のテーブルでなくYAMLファイルで定義されたEmbulkのデータ型が使われる。
例えば元のテーブルでnumericだがYAMLファイルのcolumnsではdoubleだったとすると、新しいテーブルではデータ型がdoubleになってしまう。

設定ファイルの共通化


Embulk目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま