加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:41:18 所属栏目:大数据 来源:网络整理
导读:有没有人看到Perl的DBI类型模块,可以轻松地利用 MySQL的多插入语法 插入TBL(col1,col2,col3)值(1,2,3),(4,5,6),…? 我还没有找到一个允许我这样做的界面.我发现的唯一的事情是循环遍历我的数组.这种方法看起来好像不太理想,而是将所有内容都放到一行,让MySQ
有没有人看到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进行优化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读