負荷テストのために大量のデータをすばやく作成する必要がある場合があります。 MySQLの同じテーブルを選択して挿入できます。このアプローチにより、既存のテーブルが急速に大きくなります。それは遊ぶためにたくさんのレコードを与えます。これを行ういくつかの方法があります。
MySQLの同じテーブルに挿入
構文
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
例
テーブルの場合table_name 列a、b、c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
MySQLの同じテーブルにテーブルのすべてのレコードを挿入します
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
MySQLの同じテーブルにテーブルのいくつかのレコードを挿入します
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 3 | 3 | 3 | +------+------+------+
これらのフィールドの1つが主キーである場合、またはフィールドの一意性制約がある場合は、重複値エラーが発生する可能性があります。これを回避する方法は次のとおりです。
重複せずにMySQLの同じテーブルに挿入
構文
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
例
テーブルの場合table_name 列がa、b、c、cが主キーです
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
MySQLの同じテーブルにテーブルのすべてのレコードを挿入します
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 4 | | 4 | 5 | 7 | | 7 | 8 | 10 | +------+------+------+
MySQLの同じテーブルにテーブルのいくつかのレコードを挿入します
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3 ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 5 | +------+------+------+
MySQLで一括挿入を行う方法について詳しく読むことができます