Snowflake 中的 Git 操作

本主题介绍如何执行常见的存储库操作。

将 Git 存储库与您的 Snowflake 账户集成

有关设置与 Git 存储库的集成的信息,请参阅 设置 Snowflake 以使用 Git

从存储库刷新存储库暂存区

您可以使用从远程存储库提取所有分支、标签和提交的完整克隆,刷新存储库暂存区。执行此操作时,您还会削减那些较早获取但远程存储库中已不再存在的分支和提交。

要执行本部分所述的操作,您需要 ALTER GIT REPOSITORY 访问控制 内介绍的 Snowflake 访问权限。

SQL:

当您要刷新仓库暂存区时,可以使用 ALTER GIT REPOSITORY 命令将集成 Git 存储库的内容提取到存储库暂存区。

以下示例中的代码会使用存储库的内容更新存储库暂存区:

ALTER GIT REPOSITORY snowflake_extensions FETCH;
Copy

查看存储库分支或标签的列表

您可以查看存储库暂存区中可用的分支和标签列表,这些分支和标签表示对 Git 存储库的克隆。

要执行本部分中介绍的操作,您需要以下主题中介绍的 Snowflake 访问权限:

  • 对于列表分支:SHOW GIT BRANCHES 的访问控制

  • 对于列表标签:SHOW GIT TAGS 的访问控制

    SQL:

    您可以使用 SHOW GIT BRANCHESSHOW GIT TAGS 命令查看分支和标签。

    以下示例生成的输出列出了 Git 存储库 snowflake_extensions 中的分支:

    SHOW GIT BRANCHES IN snowflake_extensions;
    
    Copy

    如前所述的命令会生成类似下面的输出:

    --------------------------------------------------------------------------------
    | name | path           | checkouts | commit_hash                              |
    --------------------------------------------------------------------------------
    | main | /branches/main |           | 0f81b1487dfc822df9f73ac6b3096b9ea9e42d69 |
    --------------------------------------------------------------------------------
    

查看存储库文件列表

可以查看分支、标签或提交中的文件列表。

SQL:

您可以使用 LIST 命令,以如下形式(可以将 LIST 缩写为 LS)查看存储库中的文件列表:

  • 按分支名称列出:

    LS @repository_stage_name/branches/branch_name;
    
    Copy
  • 按标签名称列出:

    LS @repository_stage_name/tags/tag_name;
    
    Copy
  • 按提交哈希列出:

    LS @repository_stage_name/commits/commit_hash;
    
    Copy

以下示例生成的输出列出了位于 Git 存储库 snowflake_extensions 主要分支中的文件:

LS @snowflake_extensions/branches/main;
Copy

如前所述的命令会生成类似下面的输出:

-------------------------------------------------------------------------------------------------------------------------------------------------------
| 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 REPOSITORIESDESCRIBE GIT REPOSITORY 查看存储库暂存区属性。

属性信息包括 Git 来源 URL、API 集成的名称和用于与远程存储库连接的凭据(指定为 密钥)等。

DESCRIBE GIT REPOSITORY snowflake_extensions;
Copy

如前所述的命令会生成类似下面的输出:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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;
Copy

将基于存储库的代码复制到工作表中

您可以将代码从存储库文件快速复制到工作表中。您可以编辑和运行复制的代码,或者将其作为其他用户的只读模板。

您可以复制以下类型文件的内容:.sql.py

要将更改保存在存储库中,您需要将工作表中的编辑代码复制到本地 Git 存储库中的文件(例如,与从中复制的文件对应的文件)中,然后从那里提交更改。

语言: 中文