От одного из наших партнеров я получаю около 10.000 небольших текстовых файлов с разделителями табуляции с +/- 30 записями в каждом файле. Им невозможно доставить его в один большой файл.Обработка SSIS большого количества плоских файлов болезненно медленна
Я обрабатываю эти файлы в контейнере цикла ForEach. После прочтения файла выполняются 4 вывода столбцов, а затем окончательное содержимое сохраняется в таблице SQL Server 2012.
Этот процесс может занять до двух часов.
Я уже пробовал обрабатывать небольшие файлы в один большой файл, а затем импортировал его в ту же таблицу. Этот процесс занимает еще больше времени.
У кого-нибудь есть предложения по ускорению обработки?
Ваш пакет выглядит как цикл Foreach. Внутри цикла Foreach у вас есть задача потока данных. Задача потока данных имеет источник плоского файла. Преобразование производного столбца подключается к файлу с плоским файлом. Затем у вас есть (OLE DB Destination или SQL Server Destination), связанное с преобразованием Derived Column Transformation? Если вы используете назначение OLE DB, как он настроен? Вы пишете таблицу SQL Server 2012, но сам пакет является пакетом 2012 года или предыдущей версией? Делают ли пакеты на том же сервере, на котором находятся файлы, и является ли он тем же сервером, что и таблица назначения? – billinkc
Убедитесь, что вы используете Open Rowset, используя параметр FastLoad в потоке данных назначения. Это может значительно ускорить процесс загрузки. Это поможет больше, если вы объедините файлы вместе. –
Да, в контейнере ForEach: Flat File Source -> Derivation -> OLE DB Destination. Пункт назначения сконфигурирован с отключенным «Столблок», режим доступа к данным = «Быстрая загрузка» и «Проверить ограничения» не отмечены. Сам пакет составляет 2012 год и хранится на SQL Server. У меня нет доступа к файлам на SQL Server, поэтому исходные файлы хранятся на другом сервере. – user2482329