あっ、また会いましたね。2回目の登場なクマさんです。前回は12月13日の記事を書きました。
突然ですが問題です。今日、12月25日は何の日でしょうか?って、こんな簡単な問題は皆さんならすぐにわかると思いますが、そう正解はクリスマス🎄です。ということでなんかクリスマスに絡めたお話でも書こうかなと考えていたのですが、あまりいい思い出もないのでこの辺でやめておいて本題に行きます…

さて、前回は「C#でバッチ処理を書きたい 前編」ということでConsoleAppFrameworkの紹介をしました。
今回はより実践的なバッチ処理を書くためにデータベースにまとめて挿入するということをやってみたいと思います。

CSVファイルからデータを取り出す

バッチ処理といっても様々なものがありますが本記事で実装するのはcsvファイルからユーザーの名前と年齢を取り出してデータベースにまとめて追加するというとても簡単なものです。

さっそく下記のようなFactoryを実装します。

csvから取り出したユーザー情報をユーザーオブジェクトに落とし込む処理をしています。

これでcsvファイルからデータを取り出せるようになりました。
次にデータベースへの挿入処理を実装します。

データベースへの挿入処理

さて、データベースへの挿入処理ですが今回はEntity Framework CoreというORMを使用します。
ちなみにデータベースはPostgreSQLです。

とりあえず、下のようなRepositoryを実装します。

今回は例外処理やトランザクションは省いています。

大量のデータをインサートする際に都度SQLを発行していては処理が遅くなるためBulkInsertを用いてまとめてデータをインサートできるようにしています。
これでデータベースへの挿入もできるようになりました。
あとはいい感じにバッチ処理のメイン実装を行うだけですね。

バッチ処理のロジック

csvファイルからのデータ取得とデータベースへのインサートができるようになったので、いよいよメインのロジックを実装していきます。

ConsoleAppBaseクラスを継承して下記のようなクラスを実装します。

雑な実装で申し訳ないです。

これでバッチアプリケーションは完成です。
完成したらやることはひとつですね。そう、実際に動かしてみましょう!

実行してみる

まずはcsvファイルを準備します。

あとは下記のコマンドをターミナルで実行するだけです。

dotnet run samplebatch insertusers -path .\sample.csv
無事、インサートできています。

まとめ

2回にわたってお届けした本シリーズもこれにて完結です。
ここまで、読んでくださった方には心からお礼申し上げます。
すこしでもバッチ処理について興味が出ていただければ幸いです。

それではよいお年を~

Twitterでフォローしよう

おすすめの記事