我有这段代码:
product_id product_id
9999 22
8888 21
9999 66
7777 77
9999 88
目前,数据如下所示:
product_id product_id
9999 22,66,88
8888 21
7777 77
我想存储这样的数据:
JOIN
我一直在阅读有关使用$HI
的内容,但似乎无法弄清楚如何做到这一点。我继承了这段代码,并没有使用预处理语句和占位符。
一旦我掌握了Perl,我希望能够解决这个问题。
答案 0 :(得分:0)
我会警告perl中的'data munging',当你有一个数据库时 - 几乎不变,最好这样做'数据库端' - 毕竟,这就是 的数据库>。
但要回答你的一般问题 - 你需要的是哈希:
#!/usr/bin/env perl
use strict;
use warnings;
#our hash
my %combined;
#header row - grabs first line and prints it.
print scalar <DATA>;
#iterates line by line
while ( <DATA> ) {
#removes linefeeds
chomp;
#splits on whitespace.
my ($key, $value ) = split;
#stores in combined hash of arrays.
push ( @{$combined{$key}}, $value );
}
#cycle through our hash, extracting each key and
#merge the array into a string, comma delimited.
foreach my $prod ( sort keys %combined ) {
print join ("\t", $prod, join ( ",", @{$combined{$prod}} ) ),"\n";
}
__DATA__
product_id product_id
9999 22
8888 21
9999 66
7777 77
9999 88
鉴于您的数据库查询正在返回hashref,那么您不需要如上所述的“拆分”部分 - 因为您已经有效地完成了它。此代码旨在说明该技术(尤其是因为我没有您的数据库,所以这样我们得到了一个可运行的示例)。