【发布时间】:2017-07-21 07:22:59
【问题描述】:
我正在尝试导入 CSV 文件,但标题行一直在移动,有时在第 20 行,有时在第 25 行,依此类推,但“SPIRIT Barcode”字段始终在标题中,它是唯一的我在这一点上感兴趣的事情。我将其保存在“条形码”中。
如何操作它以找到“SPIRIT Barcode”所在的行并将其用作标题? (标题上方的所有内容都可以忽略)
def self.import(file)
@b = []
CSV.foreach(file.path, headers: true) do |row|
entry = ZygReport.find_by(barcode: row['SPIRIT Barcode']) || new
entry.update({
:barcode => row['SPIRIT Barcode'],
})
entry.save!
@b << [entry.barcode]
end
end
忽略@b,这是另一个功能。
【问题讨论】:
-
您可能需要在解析文件之前重写文件。您的标题行是否有任何显着特征可以帮助您找到它?
-
它有区分“TALLY”和“SPIRIT Barcode”等其他一些文件中没有的词
-
文件是否足够小,可以在内存中完全读取?
-
通常
-
找到该行,将其分流到顶部,将修改后的版本提供给
CSV.parse。
标签: ruby-on-rails ruby csv import