プロシージャをつかって処理しますが、そもそもidがユニークじゃないですが大丈夫ですか?
なんらかのプライマリーキーが必要そうなテーブルに見えます
sample
SQL
1create table test_table(ID int primary key auto_increment, Name varchar(10),CreatedDate datetime, CreatedBy varchar(10), LastUpdatedDate datetime, LastUpdatedBy varchar(10));
2alter table test_table auto_increment = 100000007;
以下、投入のしかたは2つ考えられますが、圧倒的に後者の方が速いです
(私の環境だと100倍以上速かったです)
(1)単純な入力
SQL
1drop procedure if exists test_procedure1;
2delimiter //
3create procedure test_procedure1()
4begin
5declare i int default 0;
6while i<1000 do
7set @sql="insert ignore into test_table(Name,CreatedDate,CreatedBy,LastUpdatedDate,LastUpdatedBy) ";
8set @sql=concat(@sql,"values('テスト', now(), '佐藤', now(), '佐藤')");
9prepare stmt from @sql;
10execute stmt;
11set i=i+1;
12end while;
13end
14//
15delimiter ;
16call test_procedure1
(2)まとめて入力
SQL
1drop procedure if exists test_procedure2;
2delimiter //
3create procedure test_procedure2()
4begin
5declare i int default 0;
6set @sql="insert ignore into test_table(Name,CreatedDate,CreatedBy,LastUpdatedDate,LastUpdatedBy) ";
7while i<1000 do
8if i=0 then
9set @sql=concat(@sql,"values");
10else
11set @sql=concat(@sql,",");
12end if;
13set @sql=concat(@sql,"('テスト', now(), '佐藤', now(), '佐藤')");
14set i=i+1;
15end while;
16prepare stmt from @sql;
17execute stmt;
18end
19//
20delimiter ;
21call test_procedure2
ただし、後者のように膨大な文字列を処理する場合はメモリなどの制約もあるので
経験上1万程度を上限と考えたほうがよいでしょう。
例えば100万件のデータを投入する場合は、1万件のデータ投入を100回やるイメージです