【问题标题】:liquibase environment scriptsliquibase 环境脚本
【发布时间】:2015-08-21 17:05:16
【问题描述】:

我刚刚发现了 Liquibase,我目前正在尝试自动化我的 Oracle 数据库版本。

我正在尝试详细了解如何使用我的 SQL 脚本执行令牌替换,这些脚本可能会因我运行 Liquibase 的环境而异。

具体来说,Liquibase 是否支持基于环境的 SQL 脚本的概念?即我可能有某些自定义 SQL 脚本,这些脚本对于测试、回归和实时可能略有不同。因此,当执行我的 Liquibase 版本到 Regression 时,只会执行那些 Regression 特定的变更集,可能带有 Regression 参数。

提前致谢!

【问题讨论】:

    标签: oracle liquibase


    【解决方案1】:

    是的,Liquibase 使用“标签”和“上下文”来控制在不同环境中应用哪些变更集。这篇博文更详细地描述了它们:

    http://blog.liquibase.org/2014/11/contexts-vs-labels.html

    Liquibase 还支持可以通过各种方式设置的更改日志中的属性 - 文档的此页面显示了详细信息:

    http://www.liquibase.org/documentation/changelog_parameters.html

    这是该文档的 sn-p:

    Liquibase 允许在变更日志中动态替换参数。 使用 ${} 语法描述要替换的参数。

    配置参数值

    按以下顺序查找参数值:

    • 作为参数传递给您的 Liquibase 运行程序(请参阅 Ant、命令行、 等有关如何通过它们的文档)
    • 作为 JVM 系统属性
    • 在 DatabaseChangeLog 文件的参数块( 标记)中 本身。

    【讨论】:

    • 啊太棒了!只是快速浏览了一下。我专门在令牌更换之后,即为我的
    • 添加了一些关于属性替换功能的细节。
    • 对不起,我在上一条评论中关闭了笔记本电脑的中间句子,它被发布了。感谢您对原始帖子的更新。我要补充一点,我正在使用 sql 格式的变更日志。根据我的环境,我可能需要在我的 sql 格式的变更日志中“查找和替换”值。但是,我猜动态替换只支持基于 XML 的变更日志?我的理解正确吗?如果是这样,我怎样才能实现对 sql 格式的变更日志的动态替换?谢谢!
    • 是的,SQL 格式的变更日志中的功能更加有限。解析跨平台 SQL 是一项非常重要的练习,并且尚未在 Liquibase 中尝试过。如果可能的话,我建议不要使用它。如果您的 DBA 很挑剔并且想要查看 SQL,最好使用 XML 格式并生成 SQL(使用 updateSQL 命令)向他们展示将要运行的内容,而不是尝试使用 SQL 格式的变更日志。
    猜你喜欢
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2011-01-05
    • 2016-12-29
    • 1970-01-01
    • 2020-04-05
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多