EmbulkのMySQLへの書き込みのメモ。
|
|
MySQLのテーブルへ書き込むにはembulk-output-mysqlを使う。
このプラグインを使う為には、embulk-output-mysqlプラグインをインストールしておく必要がある。
$ embulk gem install embulk-output-mysql $ embulk gem list embulk-output-mysql 2015-09-27 00:45:57.215 +0900: Embulk v0.6.21 *** LOCAL GEMS *** embulk-output-mysql (0.4.1)
以下のようなDDLで作ったMySQLのテーブルにデータを入れる例。
create table embulk_example ( id numeric primary key, account numeric, time timestamp, purchase date, comment text );
in: 〜 out: type: mysql host: 192.168.1.1 user: hishidama password: "password" database: hishidamadb table: embulk_example mode: insert_direct
オプション名 | 説明 | ymlの記述例 | デフォルト値 | |
---|---|---|---|---|
type |
type: mysql |
(必須) | ||
host |
DBのホスト名。 |
host: 192.168.1.1 |
(必須) | |
port |
DBのポート番号。 |
port: 3306 |
3306 | |
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 | 一時テーブルを作ってそこに入れてから目的のテーブルへコピーする。 同じキーのデータが既にあった場合は上書き更新する。 |
|||
merge_direct | 目的のテーブルへ直接INSERTする。 同じキーのデータが既にあった場合は上書き更新する。 |
|||
replace | テーブルをTRUNCATEする以外はモードinsertと同じ。(resume不可) |
Embulk0.7.7から、別の設定ファイルを読み込めるようになった。[2015-10-31]
これにより、ホスト名やユーザー名・パスワード・DB名等を共通の設定ファイルに分離させることが出来る。
type: mysql host: 192.168.1.1 user: hishidama password: "password" database: hishidamadb
in: 〜 out: {% include 'common/mysql' %} table: embulk_example mode: insert_direct
includeで読み込む設定ファイルのファイル名はアンダースコア「_」で始まっている必要があるが、includeで指定する際にはアンダースコアは付けない。