事例[Talend]tMysqlBulkExecを使う時はスキーマの設定を忘れずに『カスタマーストーリー』を支えるツール特集TalendでETL処理をつくっちゃおう#ビッグデータ#データベース#MySQL#TalendYura2016.07.07000この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。はじめにTalendのtMysqlBulkExecはファイルを読み込んでDB(Mysql)に登録してくれる便利なコンポーネントです。同じ過ちを繰り返さないためにもブログに残しておきます。今回の環境は以下の通りです。5.7.10tMysqlBulkExecを使ってみる普通に使ってみます。次のようなテーブルを作成し、データを入れるためのCSVファイルを用意しました。09:09:09ジョブと呼んでいいのかわかりませんが、今回はコンポーネント1つを配置するだけです。基本設定タブのテーブルにデータを挿入したいテーブル名、読込対象にローカルファイル名に対象のファイルを設定します。詳細設定タブには、読込むファイルに合わせた記述をしておきます。これだけでジョブを実行すれば、ファイルを読み込んで中身をDBに登録してくれます。テーブルを作成してくれないコンポーネントの基本設定タブにテーブルの操作という箇所があります。ファイルを読み込んでデータを入れる際には、基本的にはテーブルがあらかじめ作られている前提だとは思います。いえファイルがあればTalendが新しくテーブル作ってくれるなら便利だと思ったので、試してみることにしました。上で用意したCSVファイルをコピーしsample2data.csvを作成し、テーブルは作成しないままジョブを実行します。すると以下のようなテーブルが存在しないというエラーが発生します。test001.job_0_1.Job.main(Job.java:467)ちなみに『テーブルの作成』を選んだ場合と『何もしない』を選んだ場合のソースコードを比較してみた所、全く変化はありませんでした。スキーマを設定すればテーブルは作られるここで少々ハマりましたが、スキーマを設定したところソースコードにも変化があり、CREATE文が追加されました。{conn_tMysqlBulkExec_1.commit();}スキーマを設定してあげないとテーブル作成するための情報がないので、正しくテーブルが作成されないようですね。テーブルがあれば、特にスキーマを設定せずとも問題がなかったので失念しておりましたが、tMysqlBulkExecを使うときはスキーマを設定しましょう。おわりに今回ソースコードを見て何かおかしいことに気付けたので、ソースコードを書く必要性の薄いTalendの場合でも何かおかしい動きがあったらコードを見てみてもいいと思います(自動生成されたコードは読みにくいですが)。実はスキーマを設定する際にも長さを指定するのを忘れていて少しハマってました(その時もコード見て何かが足りないことに気づけました)。一つTalendについて学べました。