Perl DBI使用mysql本机多重插入能力插入多行

前端之家收集整理的这篇文章主要介绍了Perl DBI使用mysql本机多重插入能力插入多行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人看到Perl的DBI类型模块,可以轻松地利用 MySQL的多插入语法

插入TBL(col1,col2,col3)值(1,2,3),(4,5,6),…?

我还没有找到一个允许我这样做的界面.我发现的唯一的事情是循环遍历我的数组.这种方法看起来好像不太理想,而是将所有内容都放到一行,让MysqL处理它.我没有找到任何文件,IE谷歌在这短暂的滚动我自己的代码做了这一切.

TIA

解决方法

有两种方法.您可以根据数组的大小插入(?,?,?)多次.文本操作将是这样的:
my $sql_values = join( ' ',('(?,?,?)') x scalar(@array) );

然后平坦化数组以调用execute().我会避免这种方式,因为需要完成棘手的字符串和数组操作.

另一种方式是开始一个事务,然后多次运行一个insert语句.

my $sql = 'INSERT INTO tbl (col1,col3)';
$dbh->{AutoCommit} = 0;
my $sth = $dbh->prepare_cached( $sql );
$sth->execute( @$_ ) for @array;
$sth->finish;
$dbh->{AutoCommit} = 1;

这比第一种方法慢一点,但它仍然避免重新声明该语句.它还避免了第一个解决方案的微妙操作,同时仍然是原子,并允许磁盘I / O进行优化.

猜你在找的Perl相关文章