Разбор текстового файла (более 100 МБ) и отправка данных по сети - PullRequest
1 голос
/ 18 декабря 2009

У меня есть требование проанализировать огромный текстовый файл и отправить части этого файла для добавления в виде отдельных строк в Content Manager. Каков наилучший способ разбора, а затем обновить БД?

Мне также необходимо идентифицировать определенные токены в этом текстовом файле.

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 18 декабря 2009

Все широко используемые языки программирования могут делать это, хотя языки сценариев (особенно Perl) могут лучше подходить для этой задачи, чем другие. Тем не менее, ваш личный опыт является более важным фактором: использование языка, с которым вы наиболее знакомы, вероятно, будет лучше, если у вас нет особых причин не использовать его или использовать другой язык.

1 голос
/ 18 декабря 2009

Классическая проблема при работе с большими файлами - это просто чтение их в первую очередь. Многие стандартные библиотеки стремятся прочитать весь файл в память / массив. Однако для действительно больших файлов это обычно не практично.

Для того, какой язык вы в итоге выберете, внимательно изучите библиотеки ввода / вывода и выберите метод, который позволит вам читать файл в виде фрагментов. Затем запустите свою логику разбора на чанки, и когда доберетесь до конца чанка, прочитайте следующее. Будьте осторожны с логикой синтаксического анализа, иногда бывает сложно обработать чанк, когда он заканчивается в месте, которое не ожидает ваш анализ.

Кроме того, система с двойным буфером иногда работает хорошо. Обработайте один блок, и когда вы приблизитесь к концу, вы заполняете другой буфер следующим блоком. Если ваш синтаксический анализ требует значительных ресурсов процессора, вы можете даже посмотреть на заполнение буфера в другом потоке, чтобы перекрыть файловый ввод-вывод с анализом. Однако я бы не стал делать это первым. Начните с простой работы логики перед оптимизацией производительности.

1 голос
/ 18 декабря 2009

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

Если под "Content Manager" вы имеете в виду Microsoft Content Manager Server Я думаю, что одним из языков Microsoft, таким как C # или VB.Net, может быть лучший выбор.

Так что мой ответ выбрал бы один из языков, которые вы уже знаете, возможно, тот, который вы знаете лучше всего.

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