Я делаю это с SSIS.Вам не нужно использовать фабрику данных.Конечно, как и все, есть много способов сделать то же самое.На высоком уровне вот что я делаю в своем пакете служб SSIS:
- Задача потока данных - я создаю плоский файл из источника данных OLEDB.
- Задача загрузки BLOB-объектов Azure - Я загружаю файл в хранилище BLOB-объектов Azure
- Выполнение задачи SQL - Я выполняю хранимую процедуру, которая массово вставляет данные из большого двоичного объекта втаблица в Azure SQL.
- Задача файловой системы - Я удаляю локальную копию файла.
Вот некоторые предварительные условия: 1. Выполните следующеезаявление для учетной записи, которую вы используете для подключения к SQL Azure: GRANT ADMINISTER DATABASE BULK OPERATIONS to <login>
Создание учетных данных базы данных с областью действия:
СОЗДАНИЕ КРЕДИТНОЙ ОБЛАСТИ БАЗЫ ДАННЫХ myScopedCredential WITH IDENTITY = 'ПОДПИСЬ ОБЩЕГО ДОСТУПА', SECRET = '';--Вставьте ПОДПИСАННУЮ ПОДПИСЬ ДОСТУПА с портала Azure здесь
Создайте внешний источник данных, например так:
СОЗДАЙТЕ ИСТОЧНИК ВНЕШНИХ ДАННЫХ myExternalDataSource WITH (TYPE = BLOB_STORAGE, LOCATION = 'https://myAzureAccount.blob.core.windows.net/myContainer', CREDENTIAL = myScopedCredential);
Создайте файл формата, описывающий файл, который вы массово импортируете в SQL Server.Это самая запутанная часть процесса.Подробнее об этом здесь .
Ваш оператор вставки (или сохраненный процесс) будет выглядеть примерно так:
BULK INSERT dbo.myTable FROM 'myContainer/myFile.txt'
WITH(DATA_SOURCE = 'myExternalDataSource',
FORMATFILE = 'format/format_myFile.xml',
FORMATFILE_DATA_SOURCE = 'myExternalDataSource')
Существует множество различных аргументов, которые вы можете использовать с массовым вставлением, который я не включил в приведенный выше пример кода, поэтому обязательно проверьте, что работает лучше всего в вашей ситуации.