【SQL:INSERT文】Excelの文字列結合を使ってSQL文を作成してみる【Excel-備忘録#13】

Excel

必要な前提知識

当記事はSQLの前提知識が少し必要です。

知識がなくても分かりやすいよう、ものすごく簡単に嚙み砕いてはいますが、そもそもやりたいことを理解できないと難しいと思います。

そのような前提条件を踏まえた上でご覧いただければと思います。

ちなみにですが、Excelの文字列結合については以前まとめていますので、そちらをご覧ください。

ゴール

さて今回は、Excelの文字列結合を使ってSQL文を作成するまでの手順についてまとめたいと思います。

必要なINSERT文の型を作成し、型と項目を文字列結合で繋ぎ合わせていくようなイメージです。

以下画像のようなINSERT文が速攻で作れるようになることがゴールです。

一緒にExcelを触りながら試してみましょう!

※注意※

例として「INSERT文」を作成しています。「UPDATE文」や「DELETE文」も同様に作成できるはずです。

また、この作成方法が最適解ではありません。もっと上手いやり方、関数の使い方があるはずですので、その辺りは皆さん考えてみてください。

手順

INSERT文に必要な項目確認

まずはINSERT文の項目を理解しておきましょう。以下の通りです。

INSERT INTO テーブル名 (テーブル項目1, テーブル項目2, ・・・) VALUES (データ1, データ2, ・・・)

これらを区切って考えましょう。

①「 INSERT INTO テーブル名 」

テーブル名は任意のテーブル名です。ご自身がINSERTしたいテーブルの名前を指定しましょう。

今回は例として、「test_table_name」としています。

②「 (テーブル項目1, テーブル項目2, ・・・) 」

テーブルの項目です。見出しにあたる部分ですね。

今回は例として、5つの項目がありますので、それぞれ指定してあげます。

③「 VALUES (データ1, データ2, ・・・) 」

「VALUES」の後にINSERTしたい「(データ1, データ2, ・・・)」を指定しましょう。

INSERT文を作成する

項目が分かったら、さっそく作成してみましょう。

まずは以下のようなものを作成しました。

=CONCAT("INSERT INTO ", $B$3, " (", TEXTJOIN(", ", FALSE, INSERTデータ!$B$2:$G$2), ") VALUES ('", TEXTJOIN("', '", FALSE, INSERTデータ!B3:G3), "');")

Point1:基本的には「CONCAT関数」で結合

基本的には「CONCAT関数」を使って結合しています。

「INSERT INTO」や「VALUES」、「( )」←括弧や「;」←セミコロンは「” “」ダブルクォーテーションで囲って指定しています。

Point2:テーブル名やテーブル項目は必要な物を指定して固定

テーブル名やテーブル項目はINSERTするデータによって変わるものではありません。不変なものですのでしっかりと固定してあげます。

「$$」で囲うことで、コピペしてINSERT文を増やす際にExcelが自動で別の値を入力することなく、固定されます。

Point3:テーブル項目やデータは「TEXTJOIN関数」で結合

テーブル項目やデータは、「TEXTJOIN関数」で結合しています。

理由は、テーブル項目やデータは「, 」カンマで区切ったり、「’ ‘」シングルクォーテーションで囲ったりする必要があるためです。

区切りをつけるのであれば、「TEXTJOIN関数」が優れています。

INSERT文の型ができたらコピペ

INSERT文の型ができたらコピペするだけです。

1つ目をコピーして、必要な分だけペーストしてあげましょう。

Excel君が自動で必要な項目を補完して作成してくれます。このときに「$$」で囲ってテーブル名やテーブル項目を固定してあげるのが必要なわけです。

まとめ

さて今回は、Excelの文字列結合を使ってSQL文を作成するまでの手順についてまとめました。

冒頭にもお伝えしましたが、もっといいやり方も必ずあるはずです。とゆうか、ツールによってはCSVファイルをアップロードするだけでINSERTしてくれそうですし・・・。

まぁあくまでも1例として、参考程度にしていただければと思います。

以上!

前回まとめた記事も読んでもらえると嬉しいです!

Excel以外の勉強記事も是非!

本ページはプロモーションが含まれています。

スポンサーリンク
Excel
ItaItsuをフォローする
Nラボ備忘録

コメント

タイトルとURLをコピーしました