mysql - 当各自的行号不匹配时,通过 id 在 Ruby 中加入两个 .csv 文件

标签 mysql ruby csv join

假设我有一个这样的 .csv 文件,将其命名为 A.csv

1234   a   d   g   j   m   p   s
5678   b   e   h   k   n   q   t
9012   c   f   i   l   o   r   u

还有一个,叫它B.csv,比如

1234   g   a   q   o
NULL   0   0   0   0
NULL   0   0   0   0
9012   l   h   k   p

我只想在第一列的 ID 匹配的地方加入,不管它们是否在同一行号中。重要的是要注意 B.csv 的 id ⊆ A.csv 的 id

最佳答案

这是我提出的解决方案:

require 'csv'

h = {}
CSV.foreach("path/to/A.csv") do |row|
  h[row.shift] = row
end

CSV.foreach("path/to/B.csv") do |row|
  next unless h.key?(row[0])
  h[row.shift] << row
end

h.each do |k,_| 
  h[k].flatten!
end

h
=>{1234=>["a", "d", "g", "j", "m", "p", "s", "g", "a", "q", "o"], 5678=>["b", "e", "h", "k", "n", "q", "t"], 9012=>["c", "f", "i", "l", "o", "r", "u", "l", "h", "k", "p"]} 

关于mysql - 当各自的行号不匹配时,通过 id 在 Ruby 中加入两个 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38988192/

相关文章:

mysql - mysql表中的禁止字符

php - 在csv php中转义换行符

mysql - 使用 ColdFusion 和 MySQL 处理多个图像

php - 从上次事件的 mysql 表中减去 time()?

mysql - AWS Lambda 不执行 node.js MySQL 查询

ruby-on-rails - 是否可以使用 ruby​​ 访问 AdSense API?

ruby - 有没有办法让 resque-web 与 Redis To Go 托管的 redis 实例一起工作?

ruby-on-rails - 在 rails api 中设置所需的参数

python - 从列表中删除重复项并检查 IP 是否来自一个列表中的另一个列表

csv - 从新的雅虎财经历史数据下载 csv 时出错