У меня есть задача импортировать / преобразовывать и извлекать сжатые двоичные файлы, которые содержат как текстовые данные, так и встроенные двоичные данные. В данных есть данные, которые носят реляционный характер и должны быть обработаны в определенной структуре базы данных. В настоящее время у меня есть однопоточное приложение C #, которое, по сути, извлекает все файлы из каталога (в настоящее время существует 13K файлов разного размера) и извлекает данные из одного потока построчно вставками в базу данных. Как вы могли себе представить, это очень медленный процесс и неприемлемый. Есть несколько различных процедур синтаксического анализа, используемых в зависимости от записи заголовка в файле. В каждом файле может быть до миллиона строк, когда все данные извлекаются до уровня детализации строк. Следующее задание состоит в том, чтобы разобрать эти строки в соответствующие таблицы на основе содержимого. то есть текстовый контент должен быть разобран далее в «блоки» аналогичных данных в базе данных. Это о подводит итог общей картины. Теперь список проблемных задач.
Как перебрать пакет данных с использованием служб SSIS? В приложении файл распаковывается, а затем анализируется с использованием типа данных потоков и байтовых массивов и направляется в требуемую процедуру синтаксического анализа на основе данных заголовка каждого пакета. Также происходит обмен битами. Должен ли я обернуть код приложения в задачу (и) скрипта и позволить ему выполнять пользовательскую обработку? Данные разделены по годам, а таблицы SQL-сервера также разделены по годам. Мне также нужно иметь возможность "ловить" неверные данные файла и обрабатывать вручную, скорее всего.
Должен ли я просто загрузить сжатый файл в SQL как большой двоичный объект и проанализировать файл с помощью T-SQL? Будет ли это многопоточным, если сделать это таким образом? Не уверен, как выполнить синтаксический анализ в T-SQL, который используется здесь. Как вы думаете, что будет быстрее?
Потенциально данные, которые в настоящее время обрабатываются с помощью файлов, могут поступать к нам через сокет. Может ли SSIS собирать эти данные в режиме реального времени? Как мне это сделать?
Обработка этих новых файлов из каталогов станет повседневной задачей.
Я могу управлять данными, как только получу их на SQL Server. Своевременная доставка туда, кажется, для меня - длинный столб в палатке. Буду признателен за любые комментарии или предложения от группы.
Rick