параллельная загрузка csv из хранилища больших двоичных объектов в базу данных SQL Azure - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть большой CSV-файл, хранящийся в хранилище BLOB-объектов в Azure.Я хочу загрузить его в базу данных zure sql как можно быстрее.

Я пытался запустить SSIS в среде выполнения интеграции DataFactory, но он довольно медленный, так как это один поток / процесс.

Чтонаилучший способ распараллелить загрузку данных из CSV в Azure в базу данных SQL?

Обратите внимание, я в порядке с перемещением CSV в альтернативное хранилище, например, datalake, если это необходимо.

1 Ответ

0 голосов
/ 08 декабря 2018

Самый быстрый способ в Azure SQL - использовать операцию BULK (BULK INSERT или OPENROWSET BULK).Вам необходимо сначала создать ВНЕШНИЙ ИСТОЧНИК ДАННЫХ, указывая на хранилище BLOB-объектов Azure, содержащее CSV, который вы хотите импортировать, а затем вы можете использовать операцию BULK:

SELECT * FROM OPENROWSET(BULK ...)

Полное объяснение и образец здесь:

https://medium.com/@mauridb/automatic-import-of-csv-data-using-azure-functions-and-azure-sql-63e1070963cf

В примере описано, как импортировать файлы, помещенные в хранилище BLOB-объектов.Несколько файлов будут импортированы параллельно.

Для полного описания того, как выполнить массовый импорт данных из хранилища BLOB-объектов Azure в Azure SQL, в официальной документации есть много примеров

https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017#f-importing-data-from-a-file-in-azure-blob-storage

Другой вариант - использовать фабрику данных Azure, которая будет работать так же быстро, как и только что упомянутая опция BULK, но для этого требуется создать конвейер фабрики данных Azure, который добавляет решение некоторой сложности ... нос другой стороны, это можно сделать без написания одной строки кода.

...