我们在为小应用创建批量上传功能时遇到了大量问题。我们正在使用FasterCSV gem将数据上传到MySQL数据库,但他更快的CSV是如此抽象和精确的要求,它不断打破格式错误的CSV错误和超时错误。
csv文件通常是由用户从其网站或Microsoft Word文档中粘贴文本创建的,因此预计数据中永远不会出现诸如智能引号或重音之类的奇怪字符是不合理的。此外,用户无法轻易识别他们的数据是否足以满足FasterCSV的要求。我们需要找到一种方法来自动修复它。
在进行FasterCSV gem处理之前,是否有一种好的方法或可靠的工具来预处理CSV数据以修复数据中的任何nits?
答案 0 :(得分:3)
在标准库中尝试CSV库。对格式错误的CSV更宽容: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
答案 1 :(得分:1)
在创建FasterCsv解析器的新实例时,您可以将文件的编码类型传递到FasterCSV选项中。 (参见此处的文档:http://fastercsv.rubyforge.org/classes/FasterCSV.html#M000018)
将其设置为utf-8或Microsoft编码应该让它通过大多数狡猾的额外字符,允许它实际解析为您所需的字符串...然后您可以清理字符串到您内心的内容。
在文档中还有一些关于“转换器”的内容可以传递 - 虽然这更多地是为了转换数字或日期类型,但你可以将它用于gsub以用于狡猾的字符。
答案 2 :(得分:1)
尝试使用smarter_csv Gem - 您可以将块传递给其处理方法并在使用之前清理数据