如何内部连接两个表?
How to inner join two tables?
通过比较文件 1 和文件 2 将列 (col_F) 扩展到最终输出 (File3)。
Col_A 已拥有 File1 和 File2 之间的关系。我必须使用这种关系并将 col_F 中的值省略到 File3 中。
举个例子:
File1
col_A col_F
A1 F1
A2 F2
A5 F5
AZ FZ
AX FX
A# F#
A2 F2
File2
col_A col_B col_C col_D
A1 B C D
A2 B C D
A5 B C D
AZ B C D
AX B C D
A# B C D
A2 B C D
File3_Final output (Query result)
col_A col_B col_C col_D col_F
A1 B C D F1
A2 B C D F2
A5 B C D F5
A B C D FZ
AX B C D FX
A# B C D F#
A2 B C D F2
NOTE: All the Tables are saved in .csv format
您说您想要 Python、MySQL 或 MongoDB 中的解决方案。但是您已经用 "perl" 标记了问题。所以这是一个 Perl 解决方案。
#!/usr/bin/perl
use strict;
use warnings;
my %file1 = get_file1();
open my $fh2, '<', 'File2' or die "File 2: $!\n";
chomp(my $header = <$fh2>);
print "$header\tcol_F\n";
while (<$fh2>) {
chomp;
my $colA = (split ' ')[0];
print "$_\t$file1{$colA}\n";
}
sub get_file1 {
my %hash;
open my $fh1, '<', 'File1' or die "File 1: $!\n";
<$fh1>; # skip headers
while (<$fh1>) {
chomp;
my ($key, $val) = split ' ';
$hash{$key} = $val;
}
return %hash;
}
通过比较文件 1 和文件 2 将列 (col_F) 扩展到最终输出 (File3)。
Col_A 已拥有 File1 和 File2 之间的关系。我必须使用这种关系并将 col_F 中的值省略到 File3 中。
举个例子:
File1
col_A col_F
A1 F1
A2 F2
A5 F5
AZ FZ
AX FX
A# F#
A2 F2
File2
col_A col_B col_C col_D
A1 B C D
A2 B C D
A5 B C D
AZ B C D
AX B C D
A# B C D
A2 B C D
File3_Final output (Query result)
col_A col_B col_C col_D col_F
A1 B C D F1
A2 B C D F2
A5 B C D F5
A B C D FZ
AX B C D FX
A# B C D F#
A2 B C D F2
NOTE: All the Tables are saved in .csv format
您说您想要 Python、MySQL 或 MongoDB 中的解决方案。但是您已经用 "perl" 标记了问题。所以这是一个 Perl 解决方案。
#!/usr/bin/perl
use strict;
use warnings;
my %file1 = get_file1();
open my $fh2, '<', 'File2' or die "File 2: $!\n";
chomp(my $header = <$fh2>);
print "$header\tcol_F\n";
while (<$fh2>) {
chomp;
my $colA = (split ' ')[0];
print "$_\t$file1{$colA}\n";
}
sub get_file1 {
my %hash;
open my $fh1, '<', 'File1' or die "File 1: $!\n";
<$fh1>; # skip headers
while (<$fh1>) {
chomp;
my ($key, $val) = split ' ';
$hash{$key} = $val;
}
return %hash;
}