Как вы импортируете файлы CSV с «неправильными» именами файлов? - PullRequest
2 голосов
/ 05 ноября 2008

Хорошо, я импортирую и анализирую CSV-файлы в приложении C #. Я начал с простого ReadLine () и разделения на запятые, но оказалось, что в некоторых текстовых полях есть запятые. Итак, я начал катить свою собственную функцию расщепления. К счастью, прошло всего несколько минут, прежде чем "Эй, глупый, кто-то, наверное, уже сделал это?" свет загорелся, и после нескольких минут поиска я понял, что могу просто подключить OleDb к каталогу и импортировать их таким образом. Это работало как чемпион, пока я не наткнулся на несколько файлов с запятыми и скобками в именах файлов. Тогда это взорвалось. Любые предложения по его импорту из таких файлов? И нет, я не контролирую имена входных файлов. Некоторые из них, вероятно, будут прочитаны непосредственно с компакт-диска, поэтому я не могу временно изменить имя файла.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2008

Я использовал это CsvReader , работает очень хорошо.

1 голос
/ 05 ноября 2008

Скопируйте эти файлы в папку% TEMP%, дав им имена, созданные с помощью Path.GetTempFileName(). Вам просто нужно отслеживать все имена файлов, чтобы потом их удалить.

Не очень эффективно, но будет работать; -)

0 голосов
/ 05 ноября 2008

Вы можете разделить запятые, но массировать данные путем поиска пар полей, которые начинаются с и заканчиваются двойными кавычками, а затем рекомбинируют их.

Вы можете вручную ходить по строкам в поисках запятых при включении и отключении булевых значений quoteFound, если встречаете двойные кавычки и игнорируете запятые, встречающиеся, когда quoteFound имеет значение true.

Вы можете сначала скопировать исходный код в каталог приложения, переименовав все файлы, добавив в конец «.csv».

Я почти уверен, что я сделал это с умом, с помощью регулярных выражений, но я не могу понять, какой это был мой проект, поэтому у меня нет кода для предоставления.

ETA: я также думаю, что вы можете использовать класс SqlBulkCopy, если вы читаете в SQL Server, а затем можете запрашивать его, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...