#sql-server #visual-studio #ssis #etl #ssis-2019
#sql-server #visual-studio #ssis #etl #ssis-2019
Вопрос:
Сценарий
Я использую Visual Studio 2019 для загрузки данных из плоских файлов (текстовых файлов) в таблицы базы данных SQL Server 2019. Это промежуточные таблицы.
У меня есть 10 текстовых файлов, и мне нужно создать по одному пакету на файл для загрузки данных в 10 разных таблиц (промежуточных), выделенных для каждого файла.
Это требование моей задачи.
Я могу сделать это успешно. Все пакеты имеют довольно быстрое время выполнения, за исключением одного, в котором текстовый файл содержит около 6,5 миллионов записей, а время выполнения пакета для загрузки данных в таблицу базы данных составляет 2 минуты 30 секунд.
Для этой задачи я использовал задачу потока данных, которая содержит:
- Источник плоского файла — содержит файл, из которого должны быть загружены данные.
- Пункт назначения OLE DB — для таблицы базы данных, в которую должны быть загружены данные. (прилагаемый скриншот для справки)
Чего я хочу достичь?
Я хочу повысить производительность этого пакета, чтобы максимально сократить время выполнения.
Комментарии:
1. Я попробовал использовать сбалансированный распределитель данных, и теперь прошедшее время составляет 50 секунд. Но мне пришлось создать 30-32 ветки для назначения OLE DB, что неудобно. Должен быть лучший способ сделать это. Пожалуйста, сообщите.
Ответ №1:
Если вы хотите вставить плоский файл в таблицу SQL Server без каких-либо преобразований. Вы можете использовать задачу МАССОВОЙ ВСТАВКИ SSIS. Или просто вы можете использовать команду массовой вставки SQL. Пример:
BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail
FROM 'f:ordersitems.csv'
WITH
(
FIELDTERMINATOR =';'
, ROWTERMINATOR ='n'
);
Ответ №2:
Большое спасибо за ваши советы и предложения. Это мне очень помогло.
Я выполнил итерации для различных комбинаций свойств потока данных, таких как DefaultBufferSize, DefaultBufferMaxRows и количество выходных путей из «Сбалансированного распределителя данных» (скриншот прилагается).). Теперь пакет выполняется за 15 секунд.