mysql - Perl将许多插入语句插入mysql数据库

标签 mysql sql perl sql-insert dbi

我目前的 perl 代码如下所示:

@valid = grep { defined($column_mapping{ $headers[$_] }) } 0 .. $#headers;

...

my $sql = sprintf 'INSERT INTO tablename ( %s ) VALUES ( %s )',
  join( ',', map { $column_mapping{$_} } @headers[@valid] ),
  join( ',', ('?') x scalar @valid);
my $sth = $dbh->prepare($sql);

...

my @row = split /,/, <INPUT>; 
$sth->execute( @row[@valid] );

(取自 mobanswer 到上一个问题。)

这基本上是从 csv 数据动态构建 SQL 插入语句,并且只允许从我的列映射中选取具有正确标题的 csv 数据。

我一直在寻找有关如何一次插入多行数据的插入语句的示例。

我的 Perl 脚本需要运行大约几亿条插入语句,而且一次执行一个语句似乎非常慢,特别是因为我运行它的服务器只有 6GB 内存和缓慢的互联网连接。

有没有办法可以一次上传多于一行的数据?那么一条插入语句可能会上传 50 行,或者一次上传 100 行?我不知道如何使用 perl DBI。

最佳答案

my $sql_values = join( ' ', ('(?, ?, ?)') x scalar(@array) );

正如之前所说,然后你可以把它压平。

关于mysql - Perl将许多插入语句插入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101823/

相关文章:

mysql - 如何使用内连接优化mysql查询

mysql - 计算买入价的 10% 利润

mysql - Hibernate 无法创建外键

mysql - 从 SQL Server 导出到 MySQL 编码问题

mysql - 如何比较mysql中的Varchar字段

sql - DB 存储与 DB CPU - 存储计算数据或使用 View 进行计算

MySQL 错误代码 1064 语法错误

Perl - 将目录从其他机器复制到本地机器

perl - 为什么 Perl 源过滤器不好,什么时候可以使用它们?

perl - 已经使用严格时是否有必要使用警告?