Преобразование текстового файла с пробелами между CR и LF - PullRequest
0 голосов
/ 25 октября 2018

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

Все строки имеют фиксированную ширину.После текста CSV, который содержит данные (длина варьируется построчно), следует CR, за которым следуют несколько пробелов и заканчивающиеся LF.Пробелы обеспечивают заполнение для выравнивания ширины линии.

Line1,Data 1,Data  2,Data 3,4,50D20202020200A
Line2,Data 11,Data 21,Data 31,41,510D2020200A
Line3,Data12,Data22,Data 32,42,520D202020200A

Я собираюсь справиться с этим с помощью средства чтения / записи потока в C #, но есть 40 файлов, которые приходят каждый месяц, и если естьспособ преобразовать их все сразу вместо одной строки за раз, я бы предпочел сделать это.

Есть мысли?

1 Ответ

0 голосов
/ 25 октября 2018

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

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

Но вывозможно, даже не придется проходить этап предварительной обработки вообще.Вы не указали, какую базу данных вы будете использовать или как планируете загружать данные, но во многих базах данных есть утилиты для обработки записей фиксированной длины.В прошлом файлы фиксированного формата приходили со всеми мыслимыми видами причудливого формата (и содержали все виды вещей, которые нужно было вырезать или преобразовать).В результате эти утилиты, как правило, очень эффективны для решения таких задач.По моему опыту, они могут быть, по крайней мере, на порядок быстрее, чем построчная обработка, что может реально повлиять на большие объемные нагрузки.

Если ваша база данных не имеет хорошей обработки массового импортаИнструменты, есть много уже написанных утилит с открытым исходным кодом или бесплатных программ, которые делают в точности то, что вам нужно.Вы можете найти их на GitHub и других местах.Например, NPM заменяет здесь здесь и zzzprojects findandreplace равно здесь .

Для быстрого и грязного подхода, которыйпозволяет просматривать все изменения при разработке более надежного решения, многие текстовые редакторы имеют возможность find and replace in multiple files.Я успешно использовал этот подход в прошлом.Например, вот окно из NotePad ++, которое позволяет вам использовать RegEx для удаления или изменения того, что вам нравится во всех файлах, соответствующих определенным критериям.

enter image description here

...