MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでバッチ挿入(一括INSERT)を行う方法をわかりやすく解説

MySQLでバッチ挿入(一括INSERT)を行う方法

MySQLで複数のレコードを一度に挿入する「バッチ挿入(一括挿入)」を行うには、INSERT文のVALUES句の後に、各行の値を括弧( )で囲み、カンマ(,)で区切って列挙します。この方法を使えばINSERT文を何度も実行する必要がなく、データベースとの通信回数が減るため、大量データを扱う際のパフォーマンス向上も期待できます。

実際の例を見ていきましょう。まずはテーブルを作成します。

1. テーブルの作成

以下は、テーブルを作成するためのCREATE文です。

mysql> CREATE table MultipleRecordWithValues
    -> (
    -> id int,
    -> name varchar(100)
    -> );
Query OK, 0 rows affected (0.88 sec)

2. バッチ挿入の基本構文

バッチ挿入の基本構文は以下のとおりです。

INSERT into yourTableName values(column1,column2,....N),(column1,column2,....N),(column1,column2,....N),...........N;

3. 実際にレコードを一括挿入する

上記の構文に従って、複数のレコードを一括挿入してみます。

mysql> insert into MultipleRecordWithValues values(1,'John'),(2,'Carol'),(3,'Bob'),(4,'Smith');
Query OK, 4 rows affected (0.16 sec)
Records: 4  Duplicates: 0  Warnings: 0

「4 rows affected」と表示されていることから、4件のレコードが正常に挿入されたことがわかります。

4. 挿入結果の確認

テーブルにすべてのレコードが正しく登録されているかを確認するには、SELECT文を使用します。

mysql> select *from MultipleRecordWithValues;

実行結果は以下のとおりです。

+------+-------+
| id   | name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Bob   |
|    4 | Smith |
+------+-------+
4 rows in set (0.00 sec)

このように、VALUES句に複数の行をカンマで区切って指定するだけで、1回のSQL文で大量のデータを効率的に挿入できます。レコード数が多い場合、1件ずつINSERT文を実行するのに比べて処理時間を大幅に短縮できるため、データ移行や初期データ投入などのシーンでぜひ活用してみてください。


  1. MySQLでAUTO_INCREMENT(自動インクリメント)列をリセットする方法

    MySQLで自動インクリメント(AUTO_INCREMENT)列の値をリセットしたい場合は、TRUNCATE TABLEコマンドを使用します。テーブルをTRUNCATEすると、すべてのデータが削除されるとともに、AUTO_INCREMENTのカウンターも初期化されます。その後、新しくレコードを挿入すると、IDは再び1から採番されます。1. テーブルを作成するまず、AUTO_INCREMENT列を持つテーブルを作成します。mysql> create table DemoTable1888 ( Id int NOT NULL AUTO_INCREMENT, PRIMA

  2. MySQLでINSERT前にトリガーを使って挿入を停止・キャンセルする方法

    BEFORE INSERTトリガーで挿入を停止する方法 MySQLでは、BEFORE INSERTトリガーとSIGNAL SQLSTATEを組み合わせることで、INSERT処理を実行前に中断(キャンセル)できます。トリガー内で条件をチェックし、条件を満たした場合にエラーを発生させることで、その挿入自体が取り消されます。 基本構文 構文は以下の通りです。 delimiter // create trigger yourTriggerName before insert on yourTableName FOR EACH ROW BEGIN yourStateme