2010-04-15 3 views
2

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

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

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

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

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

Рик

ответ

2

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

+0

Согласен. Хотя теоретически вы можете сделать что-то подобное в задаче скрипта, это действительно неправильный инструмент для работы. – Meff

+0

Я думал то же самое ... просто хотел получить другую перспективу. Я намерен взять данные, которые обрабатываются в базу данных (хранится как varbinary) в хранилище ssis. Вы видите какие-либо препятствия в этой задаче в том, что данные не обрабатываются в конкретных типах данных? – Rick

0

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

Смежные вопросы