簡體   English   中英

Rails 4 - 導入CSV無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM