Snowflake 中的 Git 操作¶
本主题介绍如何执行常见的存储库操作。
将 Git 存储库与您的 Snowflake 账户集成¶
有关设置与 Git 存储库的集成的信息,请参阅 设置 Snowflake 以使用 Git。
从存储库刷新存储库暂存区¶
您可以使用从远程存储库提取所有分支、标签和提交的完整克隆,刷新存储库暂存区。执行此操作时,您还会削减那些较早获取但远程存储库中已不再存在的分支和提交。
要执行本部分所述的操作,您需要 ALTER GIT REPOSITORY 访问控制 内介绍的 Snowflake 访问权限。
- SQL:
当您要刷新仓库暂存区时,可以使用 ALTER GIT REPOSITORY 命令将集成 Git 存储库的内容提取到存储库暂存区。
以下示例中的代码会使用存储库的内容更新存储库暂存区:
ALTER GIT REPOSITORY snowflake_extensions FETCH;
查看存储库文件列表¶
可以查看分支、标签或提交中的文件列表。
- SQL:
您可以使用 LIST 命令,以如下形式(可以将 LIST 缩写为 LS)查看存储库中的文件列表:
按分支名称列出:
LS @repository_stage_name/branches/branch_name;
按标签名称列出:
LS @repository_stage_name/tags/tag_name;
按提交哈希列出:
LS @repository_stage_name/commits/commit_hash;
以下示例生成的输出列出了位于 Git 存储库
snowflake_extensions
主要分支中的文件:LS @snowflake_extensions/branches/main;
如前所述的命令会生成类似下面的输出:
------------------------------------------------------------------------------------------------------------------------------------------------------- | name | size | md5 | sha1 | last_modified | ------------------------------------------------------------------------------------------------------------------------------------------------------- | snowflake_extensions/branches/main/.gitignore | 10 | | e43b0f988953ae3a84b00331d0ccf5f7d51cb3cf | Wed, 5 Jul 2023 22:42:34 GMT | ------------------------------------------------------------------------------------------------------------------------------------------------------- | snowflake_extensions/branches/main/python-handlers/filter.py | 169 | | c717137b18d7b75005849d76d89037fafc7b5223 | Wed, 5 Jul 2023 22:42:34 GMT | -------------------------------------------------------------------------------------------------------------------------------------------------------
查看存储库暂存区属性¶
可以查看与存储库暂存区关联的属性。
要执行本部分所述的操作,您需要 DESC GIT REPOSITORY 访问控制 内介绍的 Snowflake 访问权限。
- SQL:
您可以使用 SQL 命令 SHOW GIT REPOSITORIES 和 DESCRIBE GIT REPOSITORY 查看存储库暂存区属性。
属性信息包括 Git 来源 URL、API 集成的名称和用于与远程存储库连接的凭据(指定为 密钥)等。
DESCRIBE GIT REPOSITORY snowflake_extensions;
如前所述的命令会生成类似下面的输出:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | CREATED_ON | NAME | DATABASE_NAME | SCHEMA_NAME | ORIGIN | API_INTEGRATION | GIT_CREDENTIALS | OWNER | OWNER_ROLE_TYPE | COMMENT | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 2023-06-28 08:46:10.886 -0700 | SNOWFLAKE_EXTENSIONS | MY_DB | MAIN | https://github.com/my-account/snowflake-extensions.git | GIT_API_INTEGRATION | MY_DB.MAIN.GIT_SECRET | ACCOUNTADMIN | ROLE | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
执行存储库中的代码¶
可以执行存储库中的文件所包含的代码。
要执行本部分所述的操作,您需要 EXECUTE IMMEDIATE FROM 访问控制 内介绍的 Snowflake 访问权限。
- SQL:
您可以使用 EXECUTE IMMEDIATE FROM 执行存储库暂存区中的代码。
以下示例中的代码执行存储库暂存区
snowflake_extensions
中的create-database.sql
代码:EXECUTE IMMEDIATE FROM @snowflake_extensions/branches/main/sql/create-database.sql;
将基于存储库的代码复制到工作表中¶
您可以将代码从存储库文件快速复制到工作表中。您可以编辑和运行复制的代码,或者将其作为其他用户的只读模板。
您可以复制以下类型文件的内容:.sql
和 .py
。
要将更改保存在存储库中,您需要将工作表中的编辑代码复制到本地 Git 存储库中的文件(例如,与从中复制的文件对应的文件)中,然后从那里提交更改。