あっ、また会いましたね。2回目の登場なクマさんです。前回は12月13日の記事を書きました。
突然ですが問題です。今日、12月25日は何の日でしょうか?って、こんな簡単な問題は皆さんならすぐにわかると思いますが、そう正解はクリスマス🎄です。ということでなんかクリスマスに絡めたお話でも書こうかなと考えていたのですが、あまりいい思い出もないのでこの辺でやめておいて本題に行きます…
さて、前回は「C#でバッチ処理を書きたい 前編」ということでConsoleAppFrameworkの紹介をしました。
今回はより実践的なバッチ処理を書くためにデータベースにまとめて挿入するということをやってみたいと思います。
CSVファイルからデータを取り出す
バッチ処理といっても様々なものがありますが本記事で実装するのはcsvファイルからユーザーの名前と年齢を取り出してデータベースにまとめて追加するというとても簡単なものです。
さっそく下記のようなFactoryを実装します。
これでcsvファイルからデータを取り出せるようになりました。
次にデータベースへの挿入処理を実装します。
データベースへの挿入処理
さて、データベースへの挿入処理ですが今回はEntity Framework CoreというORMを使用します。
ちなみにデータベースはPostgreSQLです。
とりあえず、下のようなRepositoryを実装します。
大量のデータをインサートする際に都度SQLを発行していては処理が遅くなるためBulkInsertを用いてまとめてデータをインサートできるようにしています。
これでデータベースへの挿入もできるようになりました。
あとはいい感じにバッチ処理のメイン実装を行うだけですね。
バッチ処理のロジック
csvファイルからのデータ取得とデータベースへのインサートができるようになったので、いよいよメインのロジックを実装していきます。
ConsoleAppBaseクラスを継承して下記のようなクラスを実装します。
これでバッチアプリケーションは完成です。
完成したらやることはひとつですね。そう、実際に動かしてみましょう!
実行してみる
まずはcsvファイルを準備します。
あとは下記のコマンドをターミナルで実行するだけです。
dotnet run samplebatch insertusers -path .\sample.csv
まとめ
2回にわたってお届けした本シリーズもこれにて完結です。
ここまで、読んでくださった方には心からお礼申し上げます。
すこしでもバッチ処理について興味が出ていただければ幸いです。
それではよいお年を~