Какой сторонний компонент лучше всего подходит для импорта плоских файлов с использованием С#?

Просто ищем компонент, который можно программно вызвать довольно простым способом для импорта плоского файла данных. Данные обычно составляют 100 000–500 000 строк, каждая строка содержит около 200 полей текста длиной от 5 до 250 символов. Данные могут быть в формате CSV, с разделителями табуляции и т. д.

На это есть некоторый бюджет, но хотелось бы остаться довольно дешевым, если это возможно.


person alchemical    schedule 05.03.2010    source источник


Ответы (3)


Попробуйте FileHelpers с открытым исходным кодом.

Хотя у меня нет никакого опыта в этом.

person SLaks    schedule 05.03.2010

.NET Framework довольно хорошо читает плоские текстовые файлы без каких-либо сторонних компонентов. TextFieldParser, например, невероятно справляется с этим. ну и является частью фреймворка. (И да, вы можете использовать его в С#, даже если он находится в пространстве имен VB...)

Я рекомендую прочитать статьи Деборы Кураты на "Чтение значений, разделенных запятыми" (плюс часть 2 с использованием TextFieldParser) и "Чтение значений фиксированной длины". Они подробно освещают эту тему.

person Reed Copsey    schedule 05.03.2010
comment
+1 за бросок собственного подхода. Есть риск, что на поиск и эксплуатацию компонента уйдет столько же времени, сколько и на то, чтобы сделать то же самое самому. Тем не менее, FileHelpers выглядит довольно удобно, но LGPL не совсем свободна от обязательств. - person spender; 05.03.2010
comment
Я больше ищу компонент высокого уровня, который объединяет все эти функции в простой в использовании вызов метода, такой как ImportFlatFileToSQLServer - person alchemical; 05.03.2010
comment
Возможно, вы задали не тот вопрос... кажется, что у вас есть большая цель. - person spender; 05.03.2010
comment
@LuftMensch: Посмотрите на статьи Деборы Кураты, о которых я упоминал, — один из них помещает плоский файл в DataTable, который вы можете просто отправить на SQL Server одним выстрелом. Довольно просто... - person Reed Copsey; 05.03.2010
comment
Вся причина вопроса в том, что это непросто сделать в .Net... легко = не нужно читать статьи и т. д. :) - person alchemical; 05.03.2010
comment
@LuftMensch: Хех, на самом деле это чертовски просто. Но если вы не хотите узнать, как что-то работает, не читайте статьи. Откровенно говоря, в этом случае развертывание собственного решения, вероятно, потребует меньше усилий, чем работа, связанная с развертыванием и управлением сторонним решением... - person Reed Copsey; 05.03.2010
comment
хорошо, если у меня будет время, чтобы больше узнать о подходе нижнего уровня, я посмотрю на него, спасибо, что поделились ссылками. - person alchemical; 05.03.2010

Этот проект кода работает отлично!

person alchemical    schedule 05.03.2010