我使用一个简单的perl脚本在mysql DB表中创建数百万行。我在脚本中使用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行之后提交。如果可能的话,有人能告诉我怎么做吗。提前谢谢。干杯
您必须设置"AutoCommit to zero:
$dbh = DBI->connect($dsn, $user, $password,
{ RaiseError => 1, AutoCommit => 0 });
并调用所有n行$dbh->commit()
有关更多详细信息,请参阅DBI文档。