3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excelを使ってSQL構文の作成

Last updated at Posted at 2022-02-08

前置き

皆さんの会社には定期的なデータの変更作業など時間をかけている方、部署などはございますか?

弊社でも定期的にデータの変更作業が発生する部署があり、
その業務内容は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文
名簿エクセル.PNG

F2の数式は下記の通りです。

=IF(E2="追加","INSERT INTO table_meibo VALUES("&A2&",'"&B2&"',"&IF(C2="男",1,IF(C2="女",2,""))&",'"&D2&"', NOW(), NOW(),1);")

数式は基本的には「&」と「""(ダブルクォーテーション)」を使用し、
データベースに文字列で入れるものは「''(シングルクォーテーション)」で括ります。
また、性別のようにテーブルによっては数字で管理しているものに関しては
IF関数で判定し、数字に置き換えることも可能です。

補足

INSERT文については下記のように複数行をまとめることも可能です。
名簿INSERT複数.PNG

また、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&";",""))

名簿IF.PNG

最後に

Excelフォーマットで生成したSQL文をデータベースに流せば簡単に更新することが出来ます。

最後まで見ていただきありがとうございます。
少しでもお役に立てれば嬉しいです!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?