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_name 列a、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_name 列a、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 | +------+------+------+
他の列に基づいて値を更新することもできます