6

我们在为我们的小应用程序创建批量上传功能时遇到了大量问题。我们正在使用 FasterCSV gem 将数据上传到 MySQL 数据库,但他的 Faster CSV 在其要求方面是如此的紧张和精确,以至于它经常因格式错误的 CSV 错误和超时错误而中断。

csv 文件通常是由用户从他们的网站或 Microsoft Word 文档中粘贴文本创建的,因此期望数据中永远不会出现奇怪的字符(如智能引号或重音符号)是不合理的。此外,用户也不容易确定他们的数据对于 FasterCSV 是否足够完美。我们需要找到一种方法来自动为他们修复它。

在让 FasterCSV gem 处理之前,有没有一种好的方法或可靠的工具来预处理 CSV 数据以修复数据中的任何细节?

4

3 回答 3

3

试试标准库中的 CSV 库。对格式错误的 CSV 更宽容: http ://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

于 2010-03-10T01:08:16.810 回答
1

在创建 FasterCsv 解析器的新实例时,您可以将文件的编码类型传递给 FasterCSV 选项。(请参阅此处的文档:http: //fastercsv.rubyforge.org/classes/FasterCSV.html#M000018

将其设置为 utf-8 或 Microsoft 编码应该可以让它通过大多数不可靠的额外字符,使其能够实际解析为您所需的字符串......然后您可以将字符串清理为您想要的内容。

文档中还有一些关于“转换器”的内容,您可以传入 - 尽管这更多地旨在转换数字或日期类型,但您可以将其用于 gsub 以获取狡猾的字符。

于 2010-03-12T14:42:07.023 回答
1

尝试 smarter_csv Gem - 您可以将一个块传递给它的过程方法并在使用之前清理数据

https://github.com/tilo/smarter_csv

于 2012-07-30T05:59:57.027 回答