[英]Rails 4 - Import CSV is not working
在rails 4.2.4中,我试图从.csv
文件中提取数据并将其保存到数据库中。 但是现在从文件中提取的row
格式错误,因此值不会保存。
require 'csv'
filename = "#{asset.document.path}"
if File.exist?(filename)
file = File.open(filename)
if file
CSV::parse(file)[1..-1].each do |row|
User.create_data(row, admin)
end
end
end
def create_data(row, admin)
usr = User.new
usr.name = row[0] if row[0]
usr.email = row[1] if row[1]
usr.password = row[2] if row[2]
user.save
end
生成的row
数据类似于["Sannidhi\\tsannidhi@gmail.com\\tsannidhi123@\\t"]
。 从这row
我没有分别得到每个值Eg: row[0], row[1] & row[2]
来分配相关的数据库字段。
如何解决此CSV导入问题? 请帮我。
尝试这个:
CSV::parse(file)[1..-1].each do |row|
row.shift.split("\t") unless row.blank?
User.create_data(row, admin)
end
在此之后,您应该能够访问:
row[0] #=> "Sannidhi"
row[1]
row[2]
CSV文件使用tab
作为列分隔符。 您可以将自己的列分隔符作为col_sep
选项传递给CSV
。 即使其他2个答案都可以完成这项工作,让csv
完成它的工作:
CSV::parse(file, col_sep: "\t")[1..-1].each do |row|
User.create_data(row, admin)
end
另外,考虑使用headers
选项将文件的第一行用作标题而不是[1..-1]
:
CSV::parse(file, col_sep: "\t", headers: 'first_row').each do |row|
User.create_data(row, admin)
end
CSV
代表逗号分隔值。 您的文件似乎用空格分隔。 用逗号替换文件中的选项卡。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.