前置き
皆さんの会社には定期的なデータの変更作業など時間をかけている方、部署などはございますか?
弊社でも定期的にデータの変更作業が発生する部署があり、
その業務内容はExcelに入力されたデータをWeb上の画面からポチポチと変更をしていく気の遠くなる作業で多い時では数千件にも及ぶデータの変更作業が発生していました。
今回、その業務をExcelのフォーマットに入力(コピペ)させ、SQLの構文を出力し、
データベースに流すことで大幅に作業時間を削減した話を記事にします。
Excelフォーマットの作成
まず、table_meiboという社員情報のテーブルがあるとします。
|社員ID|名前|性別(1:男 2:女)|部門|登録日付|更新日付|ステータス(1:有効 9:無効)|
|:|:|-:|:|:|:|-:|
|001|田中A太|1|総務部|2019/01/15|2022/02/05|1|
今回、変更したい内容をExcelのフォーマットに貼り付ければ、下記のようにINSERT文が自動で生成できるようにしました。
※水色が入力(コピペ)されたもの
※緑が数式によって出力されたSQL文
F2の数式は下記の通りです。
=IF(E2="追加","INSERT INTO table_meibo VALUES("&A2&",'"&B2&"',"&IF(C2="男",1,IF(C2="女",2,""))&",'"&D2&"', NOW(), NOW(),1);")
数式は基本的には「&」と「""(ダブルクォーテーション)」を使用し、
データベースに文字列で入れるものは「''(シングルクォーテーション)」で括ります。
また、性別のようにテーブルによっては数字で管理しているものに関しては
IF関数で判定し、数字に置き換えることも可能です。
補足
INSERT文については下記のように複数行をまとめることも可能です。
また、IF関数を使用し「追加」の場合はINSERT文、「削除」の場合はDELETE文などといったように判定させることも可能です。
=IF(E2="追加","INSERT INTO table_meibo VALUES("&A2&",'"&B2&"',"&IF(C2="男",1,IF(C2="女",2,""))&",'"&D2&"', NOW(), NOW(),1);",IF(E2="削除","DELETE FROM table_meibo WHERE 社員ID = "&A2&";",""))
最後に
Excelフォーマットで生成したSQL文をデータベースに流せば簡単に更新することが出来ます。
最後まで見ていただきありがとうございます。
少しでもお役に立てれば嬉しいです!