有没有人看到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进行优化.