perl DBD::CSV パッケージの SQL ステートメントを書くのに助けが必要です。以下のように2つのCSVファイルをマージしたい:
ファイル1.csv:
VM_Name,VM_Cluster,VM_Zone
VM1," Cluster4","Zone3"
VM2," Cluster3","Zone4"
VM3," Cluster2","Zone1"
VM4," Cluster1","Zone2"
file2.csv:
VM_Name,vFiler_IP,vFiler_Zone
VM1," 10.10.10.10","Zone5"
VM2," 10.10.10.11","Zone8"
VM3," 10.10.10.12","Zone8"
VM4," 10.10.10.13","Zone8"
Mergerd ファイルは次のようになります。
VM_Name,VM_Cluster,VM_Zone,vFiler_IP,vFiler_Zone
VM1," Cluster4","Zone3"," 10.10.10.10","Zone5"
VM2," Cluster3","Zone4"," 10.10.10.11","Zone8"
VM3," Cluster2","Zone1"," 10.10.10.12","Zone8"
VM4," Cluster1","Zone2"," 10.10.10.13","Zone8"
ここに私のperlコードがあります:
#!/usr/bin/perl -w
use strict;
use Data::Dump qw/dump/;
use DBI;
my $dbh = DBI->connect ("dbi:CSV:",
"", "",
{
f_dir => './Desktop',
f_schema => undef,
f_ext => '.csv/r',
}
) or die " Cannot create Database Handle: $DBI::errstr()";
$dbh->{RaiseError} =1 ;
my $table1 = "file1";
my $table2 = "file2";
my $query = "SELECT $table1.VM_Name, $tabel1.VM_Cluster, $table1.VM_Zone, $table2.vFiler_IP, $table2.vFiler_Zone FROM $table1 join $table2 WHERE $table1.VM_Name = $table2.VM_Name";
my $result = $dbh->selectall_arrayref ($query);
print dump ($result);
出力は、「[]」ブラケットで期待しているタルベである必要がありますが、以下のように空の「[]」ブラケットしか得られません。
[]
私が書いた「$query」ステートメントが間違っていると推測しています。この仕事の正しいクエリを見つけるのを手伝ってくれませんか。
ありがとう。