1

我正在使用Active record Import gem将数据从 CSV 文件批量导入数据库。但我想在导入时跳过几个 CSV 列。

例如,我的 xaa.csv 具有名称、作者、作者 ID、评级等标题。导入时,我想跳过“author_id”列值并导入所有其他列。

books = CSV.read("/public/xaa.csv") //What more should I do here to skip the 3rd column
columns = [:name, :author, :rating]
Book.import columns, books, :validate => false
4

2 回答 2

7
books = []

CSV.foreach('/public/xaa.csv', headers: true) do |row|
  books << [row['name'], row['author'], row['rating']]
end

columns = [:name, :author, :rating]
Book.import(columns, books, validate: false)
于 2016-12-22T17:32:07.663 回答
1
books = CSV.readlines(path, headers:true).map{|row| row.values_at('name','rating') }

vegetaras 版本的内存效率稍高一些。

于 2016-12-22T19:21:27.013 回答