微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/Perl/172322.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐