Какой самый быстрый способ создания файла CSV из Oracle таблиц базы данных? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть таблица в базе данных oracle с 700 миллионами записей размером около 5 ГБ. Мне приходится ежедневно выполнять работу, чтобы скопировать таблицу oracle в снежинку. Поскольку в снежинке нет прямого соединителя с базой данных oracle, сначала я должен извлечь данные из базы данных oracle в файл CSV, а затем загрузить этот файл CSV в снежинку, используя скрипт python. Я попытался sqlplus для извлечения данных в CSV. Но sqlplus требует много времени для извлечения данных. Итак, мои вопросы: 1. Какой самый быстрый способ извлечь данные из oracle базы данных? 2. Поскольку мне приходится ежедневно выполнять задание, чтобы обновить эту таблицу oracle в снежинку, есть ли другой способ выполнить эту задачу?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Для извлечения 700M записей из исходной системы потребуется несколько раз. Мое предложение для загрузки истории - использовать любой инструмент ETL или Sq oop для извлечения данных из исходной системы.

  • Если вы используете любые инструменты ETL, которые вы можете подключить снежинку, используя драйвер JDB C или ODB C, который будет sh передавать ваши данные из Oracle в снежинку.
  • Если у вас было oop, вы можете использовать sq oop для извлечения данных и последующего вывода sh ваших данных в снежинку с помощью команды COPY INTO.

Надеюсь, это поможет!

Большое спасибо, Срига

0 голосов
/ 20 апреля 2020

Вы пробовали SQLCLI? Он поддерживает буферизацию в формате CSV. Проверьте образец сценария:

https://asktom.oracle.com/pls/apex/f?p=100: 11: 0 :::: P11_QUESTION_ID: 9536328100346697722

Вы можете загрузить его с: https://www.oracle.com/database/technologies/appdev/sqlcl.html

После получения CSV вы можете использовать команду COPY Snowflake для загрузки данных (вместо использования Python сценариев):

https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html

Конечно, есть и другие способы. Например, вы можете использовать Spark или инструмент ETL, такой как Talend, который может подключать как Oracle, так и Snowflake.

Этот пример показывает, как Talend можно использовать для перехода с MySQL на Snowflake, но идея то же самое для Oracle:

https://www.talend.com/resources/migrate-cloud-database-snowflake/

Как я вижу, в комментариях есть и хорошая рекомендация о Золотых Воротах.

...