CSVインサート:DBに無かったら追加を処理したい
CSVインサート:DBに無かったら追加を処理したい
作成中システムですが、現在CSV更新のパーツを組み込んでいます。
そこで、どんな更新方法が『楽』かつ『不整合が起こらない』かを考え色々と実験をしています。
楽なのはやっぱり『Excelで作ってDBを更新』なんですよね。
ただ、リレーションを組んでいる以上、一方のテーブルのみの更新は相方のいない情報を作ってしまう可能性が…。
と言う事で、当面は以下のルールで実装する事にしました。
- 更新は基本的にシステムのフォームから実行
- 新規追加はCSVでの取り込みを実装
- 相方のいないレコードを抽出する仕組みを実装
まぁこれでかなりいい線行くのではないかと思っているのですが、作業量がどうか運用してみて適宜修正カナと。
レコードが無かったら新規追加の処理フロー
自分の後戻り用にメモしておこうと思います。
面倒なのはインサートしたいテーブルの変更をどう処理させるか
殆ど共通処理なので、メンター曰く「Trait に切り出したら?」との事。
まぁね、確かにね、そっちの方が記載量も少ないしね。
「う~ん、どうやって書こう…。」
これが現在の悩み事です。
いいアイディアが出たらまた備忘録として記したいと思います。
まとめ
CSVインサート自体は検索するとお手本が沢山出てくるので実装に苦労する事は無いと思います。
悩むのはその処理を便利にしようとした時。
今回の様に「DBに値があるか確認しよう」とか「すべてのカラムが埋まらない時を想定しよう」とか「カラムの並び順がバラバラの時を考慮しよう」とか。
そんな時は処理を簡単なフローにして考えてみると解決策が見えてきたりします。
さぁ、システムも完成まであと少し。頑張ろう!
-
前の記事
Laravel:Viewのみだけど複合主キーを回避する方法 2019.04.23
-
次の記事
Laravel:CSVアップロードでMySQLを更新する 2019.05.31
コメントを残す