使用perl批量插入mysql数据库表

时间:2014-09-10 09:04:18

标签: mysql perl bulkinsert dbi dbd

我使用一个简单的perl脚本来在mysql数据库表中填充数百万行。我在脚本中使用perl DBI和DBD :: mysql。下面的示例代码

my $dbh = DBI->connect(<DB INFO>);
my $sth;
my $insert_com = "INSERT INTO TAB1 VALUES(?,?,?,?,?)";
for (1..50000000){

   $sth = $dbh->prepare($insert_com);
   $sth->execute(<val1>,<val2>,<val3>,<val4>,<val5>);

}

根据上面的代码,我认为会为循环的每次迭代发送一个提交。 我的问题是,是否可以每n次迭代发送一次提交?即在向表中插入n行后提交。如果可能,有人可以告诉我如何。提前致谢。干杯......

1 个答案:

答案 0 :(得分:3)

您必须先设置“AutoCommit to zero:

$dbh = DBI->connect($dsn, $user, $password,
                      { RaiseError => 1, AutoCommit => 0 });

并调用所有n行$dbh->commit()

有关详细信息,请参阅DBI Documentation