我使用一个简单的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行后提交。如果可能,有人可以告诉我如何。提前致谢。干杯......
答案 0 :(得分:3)
您必须先设置“AutoCommit to zero:
$dbh = DBI->connect($dsn, $user, $password,
{ RaiseError => 1, AutoCommit => 0 });
并调用所有n行$dbh->commit()
有关详细信息,请参阅DBI Documentation。