使用perl大容量插入到mysql DB表



我使用一个简单的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文档。

相关内容

  • 没有找到相关文章

最新更新