S-JIS[2015-09-27/2015-10-31] 変更履歴

Embulk MySQL出力

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
);

config.yml:

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名等を共通の設定ファイルに分離させることが出来る。

common/_mysql.yml.liquid

  type: mysql
  host: 192.168.1.1
  user: hishidama
  password: "password"
  database: hishidamadb

config.yml.liquid:

in:
  
out:
{% include 'common/mysql' %}
  table: embulk_example
  mode: insert_direct

includeで読み込む設定ファイルのファイル名はアンダースコア「_」で始まっている必要があるが、includeで指定する際にはアンダースコアは付けない。


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