TimerTrigger/SpringBatch

Azure Function上でCSVファイルのデータをDBに書き込む処理をカスタマイズしてみた

これまでこのブログで、Spring BatchのChunkモデルを用いて、Blob上のCSVファイルをDBのテーブルに書き込む処理を作成していたが、DBのテーブルに書き込む処理で、MyBatisBatchItemWriterクラスを使わず、カスタマイズすることもできる。

今回は、Blob上のCSVファイルをDBのテーブルに書き込む処理をカスタマイズしてみたので、そのサンプルプログラムを共有する。

前提条件

下記記事のサンプルプログラムを作成済であること。

Azure Function上でバッチモードとそれ以外のデータソースを混在させてみたAzure Function上で楽観ロックを実装する場合、DB接続する際のSqlSessionを生成する際に、Spring Batchの...

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。

なお、上記の赤枠は、今回追加・変更したプログラムである。

カスタマイズしたDB書き込み処理は以下の通りで、writeメソッド内で各SQLを実行したり、更新件数を確認する処理を追加している。

また、バッチ処理のMapperインタフェース・XMLファイルの内容は以下の通りで、ロックをかけないデータ取得・追加・更新処理を追加している。

さらに、Spring Batchの定義クラスは以下の通りで、DB書き込み処理でDemoItemWriterクラスを利用するよう修正している。

また、データ加工前後の処理を定義したクラスは以下の通りで、バージョンを取得する処理でロックをかけないようにしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-functions-customize-db-write/demoAzureFunc

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の記事の「サンプルプログラムの実行結果」と同じ内容となる。

Azure Function上でCSVファイルのデータをDBに取り込むプログラムで楽観ロックを使ってみたこれまでこのブログで、Spring BatchのChunkモデルを用いて、Blob上のCSVファイルをDBのテーブルに書き込む処理を作成...

要点まとめ

  • Spring BatchのChunkモデルを用いて、Blob上のCSVファイルをDBのテーブルに書き込む処理を、ItemWriterインタフェースを継承してカスタマイズすることができる。