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 );
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になってしまう。