jenkins - 有没有更好的方法在不删除现有表的情况下更新雪花数据仓库中的表架构?
问题描述
我们最近开始在我们的项目中使用雪花数据仓库,遇到了一个问题。表和视图创建脚本已上传到 Git 存储库并通过 Jenkins 执行。对于雪花中表创建脚本的任何更新(列添加或删除),我们必须删除并重新创建雪花中的表。这会导致表中的数据丢失,这是不可取的。
每次我们删除并重新创建表时,数据都会丢失,我们必须手动将所有数据加载到新创建的表中。这既费时又导致不必要的停机时间。我们的表创建脚本对所有环境都是通用的,并且之前是为 HIVE 设计的。同样扩展到雪花,我们仅在对主要雪花表进行任何模式更改时才会遇到问题。
当我们向表中添加新列时,ALTER 命令也不能解决我们的问题。我正在寻找可以将更改部署到表或可以在不删除基础数据的情况下修改表的任何工具或过程。
在浏览了 Snowflake 文档后,我考虑了 Oracle SQL 开发人员数据建模器 (SDDM),但我找不到任何合适的方法来更改已创建的表。我发现的只是如何从该工具连接到雪花并从那里进行导入。雪花文档链中提到了 Sqitch 和 Dataedo 等其他工具,但它们似乎不符合我的要求。
任何人都可以建议任何工具或流程来解决我的问题。提前致谢
解决方案
假设您想自动创建 Snowflake Alter Table语句,您可能需要查看FlywayDB。它支持使用免费和付费版本捕获 Snowflake 的 DDL 更改。它由 Redgate 制作,该公司在 SQL Server 模式比较和迁移方面有着悠久的历史。
推荐阅读
- javascript - 按用户从图中以 JSON 格式获取数据
- java - 如何根据 Java 8 中的某些条件更新现有对象 可选
- mongodb - 如何在mongodb的对象数组中查找具有不同顺序的数据?
- python - 无法在 OpenCV 中使用 SIFT 功能
- swift - 折线未连接到第一个点
- php - 存储在 HTML 表单中选择的选项的变量中
- php - filter() 集合在子查询中不起作用
- vuetify.js - Vuex:发生突变但状态没有改变
- sql - 从 SQL 表中选择列表中的第一个匹配字符串值
- singlestore - 是否可以创建一个由特定 JSON 值数组组成的 PERSISTED 列,如果可以,如何创建?