【问题标题】:How to squash Liquibase files to reflect current database state如何压缩 Liquibase 文件以反映当前数据库状态
【发布时间】:2021-11-02 23:11:28
【问题描述】:

我们公司使用 Liquibase 来控制 SQL Server 数据库表、存储过程等的版本。到目前为止,我们所做的是将更改写入 SQL 文件,然后在 DbChangeLog.xml 文件中提及文件路径.例如,如果我有一个存储过程 X,并且我想对其进行一些更改,我将创建一个包含 ALTER PROCEDURE X... 的 SQL 文件。先前版本的存储过程X 也被写入另一个文件。然后在DbChangeLog.xml 中提到这些文件,如下所示:

<changeSet author="<author>" id="<id>">
    <sqlFile endDelimiter="\nGO" path="ChangeSetScripts/alter_procedure_X.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="false" />
    <rollback>
      <sqlFile path="ChangeSetScripts/alter_procedure_X_rollback.sql" />
    </rollback>
  </changeSet> 

随着时间的推移,DbChangeLog.xml 文件不断增长,现在ChangeSetScripts/ 文件夹包含近 1500 个文件!我想知道是否有任何方法可以压缩对单个文件的所有更改并使用该文件,而不是像我们现在所做的那样维护大量文件。我可以想到这样的解决方案:从生成所有表、类型和存储过程的 SQL Server 导出脚本并使用该 SQL 文件。这是一个可以接受的解决方案,还是我应该继续使用任何最佳实践?

【问题讨论】:

    标签: sql-server version-control liquibase


    【解决方案1】:

    在这种情况下,您可以使用两个 liquibase 命令。

    1. generateChangeLog 命令:此命令会将数据库中的所有内容捕获到一个文件中
    2. changeLogSync 命令 - 它将同步从 generateChangeLog 命令生成的所有变更集并更新为已部署。

    实际上,这些操作会将所有文件压缩为单个文件。

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2019-04-06
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多