Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl DBI:在单个调用中插入一个完整的散列,作为fetchall_hashref()的补充_Perl_Insert_Dbi_Hashref - Fatal编程技术网

Perl DBI:在单个调用中插入一个完整的散列,作为fetchall_hashref()的补充

Perl DBI:在单个调用中插入一个完整的散列,作为fetchall_hashref()的补充,perl,insert,dbi,hashref,Perl,Insert,Dbi,Hashref,我将Perl DBI与DBD::Informix一起使用,但我怀疑确切的数据库对于这个问题并不重要。一句话:我正在寻找一种大规模插入方法,在这种方法中,我可以在一次调用中将散列的内容插入到一个表中 评注: 我迷恋Perl DBI方法fetchall_hashref(),在该方法中,我可以运行查询并在一次调用中将整个活动集(可能是数千行)提取到一个哈希中 我正在阅读这两个模块上的POD,在insert语句或PUT调用中寻找与此等效的内容,类似于putall_hashref()方法。我发现最好的方法

我将Perl DBI与DBD::Informix一起使用,但我怀疑确切的数据库对于这个问题并不重要。一句话:我正在寻找一种大规模插入方法,在这种方法中,我可以在一次调用中将散列的内容插入到一个表中

评注:

我迷恋Perl DBI方法
fetchall_hashref()
,在该方法中,我可以运行查询并在一次调用中将整个活动集(可能是数千行)提取到一个哈希中

我正在阅读这两个模块上的POD,在insert语句或PUT调用中寻找与此等效的内容,类似于putall_hashref()方法。我发现最好的方法是一个简单的单行插入,在这里我准备了一个insert语句?占位符,然后执行准备好的语句。我使用了ESQL/C(和Informix-4GL)中可用的PUT游标,但即使是这些游标,每次也只有一行

我需要一个质量插入方法

有没有这样的方法,但我错过了? 我看到Shawn和zdim的评论

肖恩和兹迪姆

当前(未测试)代码的示例,尽管我以前使用过类似的东西:

$db_partns = $extract_smi_p->fetchall_hashref("partition");
# Pulls from temp tab in DB1

现在循环将上面散列中的每一行插入另一个DB中的新临时表 注意:@partn_fields是一个键数组,即列名。(使用哈希切片方案。)


要使用execute_array(),我需要将每列中的所有值分隔成一个单独的数组。谢谢你的好主意;总有一天我会用的。但是设置这个设置比我现在已经做的还要难看。

显示数据示例以及如何插入数据。insert语句占用多行,但我们需要查看您所拥有的以及想要的内容。我认为
execute\u array()
是最接近的可用语句。或者
执行\u for_fetch()
。显示数据示例以及如何立即插入数据。insert语句占用多行,但我们需要查看您所拥有的以及想要的内容。我认为
execute\u array()
是最接近的可用语句。或者
为\u fetch()执行\u
for my $partn (keys %$db_partns)
{
  $put_statement_p->execute(@{$db_partns->{$partn}}{@partn_fields});
}