在Ruby中使用两个CSV文件进行SQL JOIN,而无需使用表

问题描述 投票:0回答:1

我有2个CSV文件,其列类似A, B, C ..&D, E, F。我想将这两个CSV文件连接到一个新文件中,其中File1.B = File2.E行和该行具有A, B/E, C, D, F列。不使用表如何实现此JOIN?

sql ruby csv join data-processing
1个回答
0
投票

如果您有这样的CSV文件:

first.csv:

A | B | C
1 | 1 | 1
2 | 2 | 2
3 | 4 | 5
6 | 9 | 9

second.csv:

D  | E | F
21 | 1 | 41
22 | 5 | 42
23 | 8 | 45
26 | 9 | 239

您可以执行以下操作:

require 'csv'

first = CSV.read('first.csv')
second = CSV.read('second.csv')

CSV.open("result.csv", "w") do |csv|
  csv << %w[A B.E C D F]
  first.each do |rowF|
    second.each do |rowS|
      csv << [rowF[0],rowF[1],rowF[2],rowS[0],rowS[2]] if rowF[1] == rowS[1]
    end
  end

end

获得此:

result.csv:

A | B.E | C | D  | F
1 | 1   | 1 | 21 | 41
6 | 9   | 9 | 26 | 239
© www.soinside.com 2019 - 2024. All rights reserved.