如何内部联接两个表?

时间:2019-12-02 20:55:12

标签: mysql python-3.x better-sqlite3

通过比较文件1和文件2,将一列(col_F)扩展到最终输出(文件3)。

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

1 个答案:

答案 0 :(得分:1)

您说您想要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;
}