embulk-output-oracle(0.2.1)の仕様について
embulk-output-oracleが一応公開されたが、とりあえず動く、というレベルのもので、まだ完成度は低い。
とは言え、現状の仕様についてまとめてみる。
Oracleのバージョン
12c(Windows)で検証したが、たぶん他のでも動くと思う。
driver_path
ymlファイル中のdriver_pathにOracleのJDBCドライバのパスを指定する必要がある。
これは、OracleのJDBCドライバをプラグインと一緒に配布してよいかどうか分からなかったため。
自動的に作成されるテーブルの型
出力先のテーブルが存在しない場合は、自動的に作成される。
その際の型についてまとめる。
embulkの型 | Oracleの型 |
---|---|
boolean | 未対応(エラーになる) |
long | NUMBER(19) |
double | 未対応(エラーになる) |
string | CLOB |
timestamp | TIMESTAMP(6) |
出力可能な型
次に、実際に出力可能なOracleの型。
Embulkで入力された値は型変換されてOracleに出力される。可能な型変換について表にまとめた。
embulkの型 | Oracleの型 | |||||||
---|---|---|---|---|---|---|---|---|
CHAR | VARCHAR2 | LONG | CLOB | NUMBER | FLOAT | DATE | TIMESTAMP | |
boolean | "true" / "false" | 1.0 / 0.0 | NULL | |||||
long | ○ | ○ | NULL | |||||
double | ○ | ○ | NULL | |||||
string | ○ | ○ | NULL | |||||
timestamp | NULL | NULL | ○ |
実は内部的には、NUMBER型にはStringで突っ込んでいる(longだと小数に対応できないし、floatだと桁数が大きいときに誤差が出るし、EmbulkにはBigDecimalは無いし、なので)。
NCHAR、NVARCHAR2などは未対応。
今後、いろいろな型に対応できるようにしていきたい。
それから、パフォーマンスについても検証中。
OS | Windows 7 |
Java | JDK 8u31 |
Embulk | 0.5.2 |
embulk-output-oracle | 0.2.1 |
Oracle | 12c |