1つのINSERT文でMySQLに複数のレコードを一括挿入する簡単な方法
1つのINSERT文で複数レコードを追加するには
MySQLでは、1つのINSERT文だけで複数のレコードを簡単に追加できます。レコードごとに個別のINSERT文を実行する必要はありません。
基本構文
insert into yourTableName(yourColumnName1,yourColumnName2,......N) values(yourValue1,yourValue2,....N),(yourValue1,yourValue2,....N),..........N;
ポイントは、VALUES句の後にカンマ(,)で区切って複数の値セットを並べるだけという点です。この方法(バルクインサート/一括挿入)は、レコードごとにINSERT文を発行する場合と比べて通信回数や処理のオーバーヘッドが減るため、大量データを登録する際にもパフォーマンス面で有利です。
テーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.79 sec)複数レコードの一括挿入
続いて、INSERT文を使ってテーブルに4件のレコードをまとめて挿入します。
mysql> insert into DemoTable(Value1,Value2,Value3) values(10,20,40),(100,148,120),(150,670,1000), (100000,200000,409999); Query OK, 4 rows affected (0.17 sec) Records : 4 Duplicates : 0 Warnings : 0
「Query OK, 4 rows affected」と表示されているように、たった1回のINSERT文で4件のレコードが正常に登録されました。
挿入結果の確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
上記のクエリを実行すると、次のような出力が得られます。
+----+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +----+--------+--------+--------+ | 1 | 10 | 20 | 40 | | 2 | 100 | 148 | 120 | | 3 | 150 | 670 | 1000 | | 4 | 100000 | 200000 | 409999 | +----+--------+--------+--------+ 4 rows in set (0.00 sec)
AUTO_INCREMENTが設定されたIdカラムには自動的に連番が振られ、指定した各値セットが正しく1行ずつ挿入されていることが確認できます。
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実