Как предварительно обработать данные CSV для FasterCSV? - PullRequest
6 голосов
/ 09 марта 2010

У нас значительное количество проблем при создании функции массовой загрузки для нашего небольшого приложения. Мы используем гем FasterCSV для загрузки данных в базу данных MySQL, но он Faster CSV настолько деликатен и точен в своих требованиях, что постоянно ломается из-за искаженных ошибок CSV и ошибок тайм-аута.

Файлы csv обычно создаются путем вставки текста пользователями с их веб-сайтов или из документов Microsoft Word, поэтому не стоит ожидать, что в данных никогда не будет лишних символов, таких как умные кавычки или акценты. Кроме того, пользователи не смогут легко определить, достаточно ли хороши их данные для FasterCSV или нет. Нам нужно найти способ исправить это для них автоматически.

Есть ли хороший способ или надежный инструмент для предварительной обработки данных CSV, чтобы исправить любые изъяны в данных перед обработкой их гемом FasterCSV?

Ответы [ 3 ]

3 голосов
/ 10 марта 2010

Попробуйте библиотеку CSV в стандартной библиотеке lib. Больше прощения о уродливом CSV: http://ruby -doc.org / STDLIB / libdoc / CSV / RDoc / index.html

1 голос
/ 30 июля 2012

Попробуйте самоцвет smarter_csv - вы можете передать блок его процессу и очистить данные перед использованием

https://github.com/tilo/smarter_csv

1 голос
/ 12 марта 2010

Вы можете передать тип кодировки файла в параметры FasterCSV при создании нового экземпляра анализатора FasterCsv.(см. документацию здесь: http://fastercsv.rubyforge.org/classes/FasterCSV.html#M000018)

Если установить значение utf-8 или кодировка Microsoft, это позволит превзойти большинство изворотливых лишних символов, позволяя ему фактически разобраться в требуемые строки ... затем вы можете очиститьСтроки к вашему сердцу.

В документах есть также кое-что о "конвертерах", которые вы можете передать - хотя это больше нацелено на преобразование, скажем, числовых типов или типов даты, вы сможете использовать это.gsub для хитрых персонажей.

...