преобразование двоичных данных с использованием ssis и SQL Server 2008 - PullRequest
1 голос
/ 15 апреля 2010

У меня есть задача импортировать / преобразовывать и извлекать сжатые двоичные файлы, которые содержат как текстовые данные, так и встроенные двоичные данные. В данных есть данные, которые носят реляционный характер и должны быть обработаны в определенной структуре базы данных. В настоящее время у меня есть однопоточное приложение C #, которое, по сути, извлекает все файлы из каталога (в настоящее время существует 13K файлов разного размера) и извлекает данные из одного потока построчно вставками в базу данных. Как вы могли себе представить, это очень медленный процесс и неприемлемый. Есть несколько различных процедур синтаксического анализа, используемых в зависимости от записи заголовка в файле. В каждом файле может быть до миллиона строк, когда все данные извлекаются до уровня детализации строк. Следующее задание состоит в том, чтобы разобрать эти строки в соответствующие таблицы на основе содержимого. то есть текстовый контент должен быть разобран далее в «блоки» аналогичных данных в базе данных. Это о подводит итог общей картины. Теперь список проблемных задач.

  1. Как перебрать пакет данных с использованием служб SSIS? В приложении файл распаковывается, а затем анализируется с использованием типа данных потоков и байтовых массивов и направляется в требуемую процедуру синтаксического анализа на основе данных заголовка каждого пакета. Также происходит обмен битами. Должен ли я обернуть код приложения в задачу (и) скрипта и позволить ему выполнять пользовательскую обработку? Данные разделены по годам, а таблицы SQL-сервера также разделены по годам. Мне также нужно иметь возможность "ловить" неверные данные файла и обрабатывать вручную, скорее всего.

  2. Должен ли я просто загрузить сжатый файл в SQL как большой двоичный объект и проанализировать файл с помощью T-SQL? Будет ли это многопоточным, если сделать это таким образом? Не уверен, как выполнить синтаксический анализ в T-SQL, который используется здесь. Как вы думаете, что будет быстрее?

  3. Потенциально данные, которые в настоящее время обрабатываются с помощью файлов, могут поступать к нам через сокет. Может ли SSIS собирать эти данные в режиме реального времени? Как мне это сделать?

Обработка этих новых файлов из каталогов станет повседневной задачей. Я могу управлять данными, как только получу их на SQL Server. Своевременная доставка туда, кажется, для меня - длинный столб в палатке. Буду признателен за любые комментарии или предложения от группы.

Rick

Ответы [ 2 ]

2 голосов
/ 15 апреля 2010

Я думаю, что вам здесь не повезло - SSIS просто не инструмент для этого. Двоичные манипуляции - это не то, что они имели в виду, когда концептуализировали. SSIS в основном является ядром для процессов ETL, загружающих хранилища данных всеми видами данных.

0 голосов
/ 02 мая 2010

SSIS будет работать просто отлично.Вы можете улучшить процесс, не захватывая все 13k файлов в одной задаче.Вы можете округлить Робин, потянув в файлах.Разделите ваши файлы в зависимости от количества процессоров, которые у вас есть на вашем поле SSIS.Если приложение C # можно уменьшить, вы можете поместить это в задачу сценария.У меня есть структура, которая позволит вам перемещать файлы параллельно.Я использую его для перемещения файлов .pdf на сервер SQL.Если вы отправите мне письмо, я перешлю его вам.

...