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

MySQLで一度に複数行を挿入する方法!バッチ挿入の基本と実例

MySQLでの一括挿入(バッチ挿入)の基本

MySQLで複数のレコードを1回のクエリでまとめて挿入したい場合は、VALUES()句をカンマで区切って記述するのが基本です。この方法を使えば、INSERT文を何度も実行する必要がなく、無効なクエリになることもありません。

基本的な構文

INSERT INTO テーブル名 VALUES(値1),(値2),(値3),(値4),(値5),.......N;

各レコードの値を () で囲み、それらをカンマで区切って並べるだけで、複数行を一度に挿入できます。非常にシンプルでありながら、大量データの登録時にパフォーマンス面でも大きなメリットがあります。

実際にテーブルを作成して試してみよう

ステップ1:テーブルの作成

まず、動作を確認するためのサンプルテーブルを作成します。以下のクエリを実行してください。

mysql> create table addMultipleValues
    -> (
    -> Counter int NOT NULL
    -> );
Query OK, 0 rows affected (0.60 sec)

ここでは、整数型のカラム「Counter」だけを持つシンプルなテーブルを作成しました。

ステップ2:複数レコードの一括挿入

次に、VALUES句をカンマ区切りにして、10件のレコードを1回のINSERT文で挿入してみます。

mysql> insert into addMultipleValues values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.27 sec)
Records: 10 Duplicates: 0 Warnings: 0

実行結果を見ると、「10 rows affected」と表示され、10件すべてが正常に挿入されたことがわかります。重複も警告もなく、処理は一度だけのクエリ実行で完了しています。

ステップ3:SELECT文で挿入結果を確認

最後に、SELECT文ですべてのレコードを表示して、正しく登録されているかを確認しましょう。

mysql> select *from addMultipleValues;

以下が出力結果です。

+---------+
| Counter |
+---------+
|       1 |
|       2 |
|       3 |
|       4 |
|       5 |
|       6 |
|       7 |
|       8 |
|       9 |
|      10 |
+---------+
10 rows in set (0.00 sec)

カンマ区切りのVALUES句で指定した順番どおりに、1から10までの値が正しく格納されていることが確認できました。

バッチ挿入を使うメリット

1行ずつINSERT文を実行する方法と比べて、カンマ区切りによる一括挿入には次のような利点があります。

  • パフォーマンス向上: クエリの実行回数が減るため、ネットワーク通信やSQL解析のオーバーヘッドが大幅に削減されます。
  • トランザクション管理が簡単: 1つのステートメントとして扱えるため、エラー発生時のロールバック制御がシンプルになります。
  • コードの可読性: アプリケーション側のコードも簡潔になり、保守性が高まります。

まとめ

MySQLで複数行を一度に挿入するには、INSERT INTO テーブル名 VALUES(値),(値),... のように、VALUES句をカンマで区切って記述するだけです。構文はシンプルですが、大量データを扱う場面では処理速度の面で大きな効果を発揮する重要なテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実