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进行优化.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...