SQL

【MySQL】Excelで作成した複数のテストデータを一括でINSERTする

SQL一括INSERT
ねぇもりさん、SQLで、テーブルにテスト用データをたくさん作りたいんだけど、一件ずつINSERTするのめんどうくさいよね
もりさん
もりさん
元データはExcelに作ってあるかな?それならExcelで上手く加工してまとめてレコードを作ろう

Laravelのテスト用にテーブルにたくさんデータが必要だな~。INSERT文ってのでレコード作れるらしいけど、めんどうくさいなぁ~

というわけで、考えてみました。

レコードを作成するテーブルの情報

テーブル名は「books」で、カラムは3つあります。

  • id
  • author_id
  • book_title

 

Excelで作成したテストデータがこちら

SQL一括1

Excelシート上でクエリを作る

元データの左右に空白列を挿入します。目印としてセルを黄色にしています。

SQL一括1-2

VALUES以降のクエリを作成

booksテーブルにレコードを作成するINSERT文です。

INSERT INTO books VALUES('idの値','author_idの値','book_titleの値');

1件目(Excel2行目)の場合、VALUES以降の部分はこうなります

('1','1','白夜行');

この形式にするため、シングルクォートやカンマなどの記号を入力します。

SQL一括2

私はこんな感じで入力しています。

 

①先頭行の値を最終行まで一瞬でコピーする方法

先頭行のセルの右下にカーソルを合わせると、十字のマークが出現します。そのポイントで「ダブルクリック」します。

②シングルクォートは2つ並べる

‘,’と入力すると、最初のシングルクォート以降が消えて,’となってしまうので、,’と入力しています。

(※Excelでは、1つめのシングルクォート以降が文字列として認識されるため、先頭のシングルクォートは見た目消えてしまう)

SQL一括2-2

A列~G列の文字列を&で結合します。

SQL一括3

H列にVALUES以降のクエリができました。

SQL一括4

INSERT文と連結させる

I列にINSERT文を入力し、H列と結合します。

INSERT INTO books VALUES の部分を文字列として認識させたいので、前後をダブルクオーテーションで囲っています。

I2セルに下記の数式を入力したら、最終行までコピーします。セルの右下にカーソルを合わせて「ダブルクリック」です!

="INSERT INTO books VALUES"&H2

SQL一括5

クエリのできあがり

SQL一括6

作成したクエリを実行する

動画をご覧ください。下記の4つの作業をしています。

use データベース名;のコマンドで、事前にデータベースの切り替えをしておきましょう!

  1. booksテーブルが空であることを確認
  2. Excelで作成したI列のクエリを一括コピー
  3. ターミナルに貼り付け
  4. booksテーブルにレコードが作成されていることを確認

 

いかがでしたか?この手順なら、Excelシートにデータさえ作成しておけば、10行でも100行でも手間は同じです!

非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です