You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python 3.8,通过schemachange实现GitHub Action连接Snowflake DB

使用GitHub Action + schemachange 自动化Snowflake数据库Schema变更

以下是可直接运行的GitHub Action配置,用于通过schemachange工具连接Snowflake数据库,自动执行schema变更脚本。

完整配置代码

name: Snowflake Schema 自动变更

# 触发条件:main分支推送dbscripts目录下文件,或手动触发
on:
  push:
    branches:
      - main
    paths:
      - 'dbscripts/**'  # 存放SQL变更脚本的目录
  workflow_dispatch:

jobs:
  schema-change-job:
    runs-on: ubuntu-latest

    steps:
      # 拉取代码仓库
      - name: 拉取仓库代码
        uses: actions/checkout@v2

      # 配置Python环境
      - name: 配置Python 3.8.x环境
        uses: actions/setup-python@v2.2.1
        with:
          python-version: 3.8.x

      # 执行schemachange变更
      - name: 执行schemachange
        env:
          SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
          SNOWFLAKE_USERNAME: ${{ secrets.SNOWFLAKE_USERNAME }}
          SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }}
          SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }}
          SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }}
          SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}
          SNOWFLAKE_SCHEMA: ${{ secrets.SNOWFLAKE_SCHEMA }}
        run: |
          echo "当前工作目录: $GITHUB_WORKSPACE"
          echo "步骤1:安装schemachange"
          pip install schemachange
          echo "步骤2:执行schema变更"
          schemachange -f $GITHUB_WORKSPACE/dbscripts -a $SNOWFLAKE_ACCOUNT -u $SNOWFLAKE_USERNAME -r $SNOWFLAKE_ROLE -w $SNOWFLAKE_WAREHOUSE -d $SNOWFLAKE_DATABASE -s $SNOWFLAKE_SCHEMA -c $SNOWFLAKE_DATABASE.xxxx.CHANGE_HISTORY --create-change-history-table

前置准备

  • SQL脚本规范:变更脚本需遵循schemachange命名规则,示例:V1.1.1__test_sql_table_creation.sql,格式为 V<版本号>__<描述>.sql
  • 脚本存放位置:将SQL脚本放在仓库主分支的dbscripts目录下
  • 配置GitHub Secrets:在仓库的「Settings > Secrets and variables > Actions」中添加以下密钥:
    • SNOWFLAKE_ACCOUNT:Snowflake账户名
    • SNOWFLAKE_USERNAME:Snowflake用户名
    • SNOWFLAKE_ROLE:执行变更的Snowflake角色
    • SNOWFLAKE_WAREHOUSE:使用的Snowflake仓库
    • SNOWFLAKE_DATABASE:目标数据库
    • SNOWFLAKE_PASSWORD:Snowflake用户密码
    • SNOWFLAKE_SCHEMA:目标Schema
  • 注意:配置中的 -c $SNOWFLAKE_DATABASE.xxxx.CHANGE_HISTORY 需替换为你实际的变更历史表位置(将xxxx替换为对应的Schema),--create-change-history-table 参数会自动创建变更历史表(首次执行时需要)

工作流程说明

  1. 触发时机:当main分支的dbscripts目录下有文件推送时自动执行,也可通过GitHub Actions页面手动触发
  2. 环境配置:使用Ubuntu虚拟机运行,拉取仓库代码后配置Python 3.8环境
  3. 执行变更:安装schemachange工具,读取dbscripts下的SQL脚本,连接Snowflake执行变更,并记录变更历史到指定的历史表中

内容的提问来源于stack exchange,提问作者user2466009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:53:20