今日もプログラミング

IT技術とかプログラミングのこととか特にJavaを中心に書いていきます

embulk-output-oracle(0.2.1)の仕様について

embulk-output-oracleが一応公開されたが、とりあえず動く、というレベルのもので、まだ完成度は低い。

とは言え、現状の仕様についてまとめてみる。

 

Oracleのバージョン

12c(Windows)で検証したが、たぶん他のでも動くと思う。

 

driver_path

ymlファイル中のdriver_pathにOracleJDBCドライバのパスを指定する必要がある。

これは、OracleJDBCドライバをプラグインと一緒に配布してよいかどうか分からなかったため。

 

自動的に作成されるテーブルの型

出力先のテーブルが存在しない場合は、自動的に作成される。

その際の型についてまとめる。

embulkの型Oracleの型
boolean 未対応(エラーになる)
long NUMBER(19)
double 未対応(エラーになる)
string CLOB
timestamp TIMESTAMP(6)

 

出力可能な型

次に、実際に出力可能なOracleの型。

Embulkで入力された値は型変換されてOracleに出力される。可能な型変換について表にまとめた。

embulkの型Oracleの型
CHARVARCHAR2LONGCLOBNUMBERFLOATDATETIMESTAMP
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