【问题标题】:Rails FasterCSV "unquoted fields do not allow \r or \n"Rails FasterCSV“未加引号的字段不允许 \r 或 \n”
【发布时间】:2012-03-01 07:01:40
【问题描述】:

我遇到了 FasterCSV 和我的 rake db:seeds 迁移问题。我得到错误: “rake 中止!未加引号的字段不允许 \r 或 \n(第 2 行)” 在以下seeds.rb 数据上:

require 'csv' 

directory = "db/init_data/"

file_name = "gardenzing020812.csv"
path_to_file = directory + file_name
puts 'Loading Plant records'
# Pre-load all Plant records
n=0
CSV.foreach(path_to_file) do |row|
  Plant.create! :name => row[1],
  :plant_type => row[3],
  :group => row[2],
  :image_path => row[45],
  :height => row[5],
  :sow_inside_outside => row[8]
n=n+1
end                 

我已经搜索了这个问题的解决方案,并发现对于很多人来说这是一个 UTF-8 编码问题。我尝试过要求 iconv 和:encoding => 'u',但这会给我错误“UTF-8 中的无效字节序列”。

我是一个新手,我不知道这是否真的是我需要破解的编码问题(我一直试图这样做没有成功,如果是这样,我真的可以使用一些指导)或者,我更有可能觉得,我犯了一个简单的错误,并且在我设置种子.rb 的方式上做错了,可能还有我的 excel -> csv 文件。 csv 文件中没有不良或尴尬的数据。它是简单的单字字符串、文本和整数。请帮忙!

【问题讨论】:

  • 您能告诉我们 CSV 的哪一部分造成了问题吗?
  • @muistooshort 如果您需要更放大的照片,请告诉我。这是整个文件。我在帖子中截断了我的种子.rb 文件,但我的实际代码解析了这张表中的所有列。
  • 有机会看到原始 CSV 吗?
  • 我现在在文本文件中看到我的一些专栏引用了引号。是这个问题吗?
  • 这听起来可能是问题所在。为了安全起见,最好引用所有列值。

标签: ruby-on-rails ruby migration fastercsv


【解决方案1】:

使用String.encode(universal_newline: true) 代替 gsub。 它将 CRLF 和 CR 转换为 LF # 总是用 \n

换行

【讨论】:

    【解决方案2】:

    我没有足够的声誉来发表评论,但我想说我已经在网上日夜寻找这个错误很长时间了,终于在 mu is too short 的 cmets 中找到了解决方案。

    当我在我的所有价值观周围加上引号时,我终于让它起作用了。

    编辑:链接回答!!!Rails FasterCSV "unquoted fields do not allow \r or \n"

    【讨论】:

    • 你能至少链接你找到它的帖子,这样人们就不必挖掘他的 5000 个答案了吗?
    • @Marv 我怀疑他们在谈论我的“为了安全起见,最好引用所有列值。”评论这个问题。而且我有点害羞 5000 个答案:)
    • @muistooshort 哦。错误,这发生在通过 First Answers 审核队列时。我以为他在您的其他答案之一中找到了解决方案。我的错!
    • 是否有人可以发布一个代码示例,说明在值周围加上引号的情况?是:plant_type => row["3"], 吗? (假设不是)
    【解决方案3】:

    就像清除 csv 中的所有格式一样简单。 Excel 似乎习惯于在保存为 csv 文件后保留大量格式,这导致了失败。在我将所有没有格式的数据复制并粘贴到一个新的 csv 文件中后,就很好了。

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2022-01-21
      • 2019-05-27
      • 2021-09-26
      相关资源
      最近更新 更多