如何将雪花中存储的所有视图下载到本地计算机

问题描述 投票:0回答:3

我想创建保存在雪花(不是数据)上的所有SQL脚本(视图)的备份。我该怎么做?显然,手动复制和粘贴不是解决方案。期望的结果:我具有本地计算机上雪花数据库中的所有视图(SQL脚本),每个视图都有文件。期望的结果完美版本:我的本地计算机上的雪花中包含所有视图(SQL脚本),其中文件夹将对应于雪花中的模式,文件将对应于雪花中的视图(文件也放置在正确的文件夹中)。

view download backup snowflake-data-warehouse sql-scripts
3个回答
0
投票

SHOW VIEWS在文本列中包含DDL。要获取数据库中的所有视图:

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

您可以使用SNOWSQL从CLI调用它。


0
投票

您可以运行:

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

这将为您提供架构中所有对象的DDL,然后您可以将其保存到文件夹中的文件中。


0
投票

您刚刚下载了完整的数据库DDL

选项1

选择GET_DDL('database','databasename')并将其复制并保存到您的计算机中

选项2

编写Python脚本以获取模式,视图,表,存储的proc等的列表,并将其保存到本地计算机上的相应文件夹中。像这样的东西,您只需要扩展它即可获得完美的版本输出。只需安装雪花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()
© www.soinside.com 2019 - 2024. All rights reserved.