загрузка 20 миллионов записей из SSIS в SNOWFLAKE через ODBC - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь загрузить около 20 миллионов записей из ssis в снежинку, используя соединение ODBC, эта загрузка длится вечно. Есть ли какой-нибудь более быстрый метод, чем при использовании ODBC? Я могу подумать о том, чтобы загрузить его в плоский файл, а затем использовать плоский файл для загрузки в снежинку, но уверен, как это сделать.

Обновление: я сгенерировал текстовый файл, используя bcp, и поместил этот файл в сцену снежинки, используя ODBC. подключение, а затем использовать команду copy в команду для загрузки данных в таблицы.

проблема: сгенерированный текстовый файл представляет собой файл размером 2,5 ГБ, и ODBC пытается отправить файл на этап снежинки, чтобы получить какую-либо помощь по этой части ??

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

Должно быть быстрее записывать сжатые объекты в хранилище объектов облачного провайдера (AWS S3, BLOB-объект Azure и т. Д.), А затем COPY INTO Снежинка. Но также более сложный.

Вы случайно не пишете по одной строке за 20 000 000 вызовов базы данных?

1 голос
/ 06 ноября 2019

Когда вы используете соединение ODBC, драйвер ODBC внутренне вызывает API-интерфейс Snowflake для отправки данных, а не потоковую операцию, что означает, что клиент отправляет пакет данных, сервер подтверждает его, а затем процесс повторяется.

Вот альтернатива, попробуйте загрузчик файлов

. Вы можете использовать команду put для переноса файла в облако:

put file://C:\getting-started\employees0*.csv @SALES_DB.SALES_DATA.%emp_basic;

После завершения передачи вы можетеТеперь вставьте данные в таблицу:

copy into emp_basic
  from @%emp_basic
  file_format = (type = csv field_optionally_enclosed_by='"')
  pattern = '.*employees0[1-5].csv.gz'
  on_error = 'skip_file';

Пошаговое руководство: загрузка большого объема данных в Snowflake с использованием ODBC / JDBC

...