Как загрузить все представления, хранящиеся в снежинке, на локальный компьютер - PullRequest
0 голосов
/ 04 марта 2020

Я хочу создать резервную копию всех SQL скриптов (представлений), которые сохраняются на снежинке (не данных). Как мне это сделать? Очевидно, что ручное копирование и вставка не является ответом. Ожидаемый результат : У меня есть все представления (sql сценарии), которые находятся в базе данных снежинок на моем локальном компьютере, файл для представления. Ожидаемый результат идеальная версия : У меня есть все представления (sql скрипты), которые находятся в снежинке на моем локальном компьютере, где папки будут соответствовать схемам в снежинке, а файлы будут соответствовать представлениям в снежинке (файлы также помещены в правильные папки).

Ответы [ 3 ]

1 голос
/ 04 марта 2020

Вы можете запустить:

SELECT get_ddl('schema',{schema_name});

Это даст вам DDL всех объектов в схеме, которые затем можно сохранить в файл в папке.

1 голос
/ 05 марта 2020

Вы просто загружаете полную базу данных DDL

Опция 1

, выбираете GET_DDL («база данных», «имя базы данных») и копируете и сохраняете ее на своем компьютере

Опция 2

Напишите скрипт Python, чтобы получить список схем, представлений, таблиц, сохраненных процедур и т. Д. c. и сохраните его в соответствующей папке на вашем локальном компьютере. Что-то вроде этого, вам просто нужно расширить его, чтобы получить идеальный вывод версии. Просто установите разъем снежинки Python, чтобы запустить следующий код.

import snowflake.connector

con = snowflake.connector.connect(
    user='YourUsername',
    password='YourPassword',
    account='your snowflakeaccount',
    database='databasename',
    warehouse='datawarehousename',
    role='dbrole'
    )

cur = con.cursor()
try:
    cur.execute("SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE from information_schema.tables")
    for (TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE) in cur:
        print('{0}, {1}'.format(TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE))

        #Have another loop  to get the DDL for each object and save it to a file/folder structure, something like this..
        #cur2.execute("SELECT GET_DDL('object type information from previous query','object name'")

finally:
    cur.close()
1 голос
/ 04 марта 2020

SHOW VIEWS включает DDL в текстовом столбце. Чтобы получить все представления в базе данных:

show views in database my_database;
select "text" from table(result_scan(-1));

Вы можете вызвать его из CLI с помощью SNOW SQL.

...