sql >> データベース >  >> RDS >> Mysql

MySQLで一括挿入を行う方法は?

    MySQLの一括挿入は、テーブルに一度に多数のレコードを挿入する必要がある場合です。テスト用のデータをすばやく作成するために使用できます。すべての行の挿入ステートメントを書き直すのは面倒です。 MySQLに一括挿入する方法は次のとおりです。

    MySQLの一括挿入

    構文

    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( a1, a2,...aN ),( b1, b2,...bN ),..;

    a1、a2、a3、.. –field1の値
    b1、b2、b3、.. –field2の値
    c1、c2、c3、.. –field3の値


    テーブルの場合table_namea、b、c

    mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3);
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   3  |
    +------+------+------+

    ご覧のとおり、MySQLでの一括挿入では、行/列の重複が許可されます。主キーが重複する可能性があります。これを回避する方法は次のとおりです。

    重複のないMySQLへの一括挿入

    ONDUPLICATEKEY句を使用します。主キーの重複値を検出します。また、重複する値を更新するためにUPDATE句を追加します。

    構文

    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( a1, a2,...aN ),( b1, b2,...bN ),..
                           ON DUPLICATE KEY
                           UPDATE primary_key_field=<expression> ;

    a1、a2、a3、.. –field1の値
    b1、b2、b3、.. –field2の値
    c1、c2、c3、.. –field3の値


    テーブルの場合table_namea、b、c cが主キーです

    mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3)
    ON DUPLICATE KEY UPDATE c=c+1;
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   4  |
    +------+------+------+

    他の列に基づいて値を更新することもできます

    1. MySQLインデックスのガイド

    2. MariaDB JSON_VALUE()の説明

    3. MySQLクエリを使用して、テーブル全体のテキストを検索して置換します

    4. VBA錬金術:メソッドをプロパティに変える