embulk-output-jdbc 3.0移行にまだ対応できておらず、一部の情報が古いです。
接続できるデータベース
RDBMS | プラグイン | 動作 | 備考 |
---|---|---|---|
PostgreSQL | embulk-output-postgres | ||
MySQL | embulk-output-mysql | ||
MariaDB | embulk-output-mysql | 未確認 | |
Redshift | embulk-output-redshit | ||
Oracle | embulk-output-oracle | ||
SQLite | embulk-output-jdbc | 未確認 | |
SQL Server | embulk-output-jdbc? | 未確認 | |
DB2 | 未確認 | 要プラグイン |
※ 未確認とは、ネット上で動作したという記事をみておらず動作が確認できていないことを表します。
- Oracle
- SQLite3
- SQLite3はBIGINT4に未対応のため組み込みのデータベースプラグインでは出力ができません。ログ
- 代わりにembulk-output-sqlite3が利用できます。
モード
二つのモードが実装済みです。またtruncate_insertモードの導入が検討されていいます。
- insertモード: 読み込んだデータをテーブルに追記していきます。
- replaceモード: 読み込んだデータでテーブルを丸ごと置き換えます。
- truncate_insertモード、既存のエントリは削除して読み込んだデータに追記します。(テーブルをドロップしない) (未実装)
insertモードの動作
- インサート先のテーブルがなかったらテーブルを作成します。
- テンポラリテーブルに読み込んだレコードを挿入します。
- インサートの処理はタスクの数だけ並列で行われます。
インサートモードを利用するときはrunのオプションに-oをつけて最後に読み込んだファイルを記憶させると便利です。
replaceモードの動作
- テンポラリテーブルを作成します。
- テンポラリテーブルに読み込んだレコードを挿入します。
- インサートの処理はタスクの数だけ並列で行われます。
- インサート先のテーブルがあった場合テーブルをドロップします。
- テンポラリテーブルの名前をインサート先のテーブルに変更します。
今後追記予定
- Embulkの型とRDBMSのカラムの対応表
- 現状INTは未サポート等