有没有办法在现有数据库上为每个 table 生成变更日志?

Is there a way to generate changelogs per table on an existing database?

我有一个现有的数据库,我想在该数据库上应用 liquibase 并为每个 table 生成一个单独的更新日志,以创建当前的数据库方案。

据我所知,只有为整个数据库生成一个大的 changelog.xml 的可能性,我用命令行做了:

liquibase --driver=oracle.jdbc.OracleDriver \
      --classpath=\path\to\classes:jdbcdriver.jar \
      --changeLogFile=com/example/db.changelog.xml \
      --url="jdbc:oracle:thin:@localhost:1521:XE" \
      --username=scott \
      --password=tiger \
      generateChangeLog

但是,我想为每个 table 生成一个单独的 changelog.xml。比方说,如果数据库有三个table:蝴蝶、花和蜜蜂,那么应该生成:changelog_butterfly.xml、changelog_flower.xml和changelog_bee.xml或类似的东西。

非常感谢任何想法。

根据 documentation 判断 - 没有直接的方法可以做到这一点。

此外,从逻辑的角度来看:如果目标是每个 table 都有变更日志,那么在哪里放置外键的变更集?由于它们属于所涉及的两个 table - 这里存在矛盾 :)

可能,解决矛盾的一种方法是将外键放在单独的更新日志中。然而,它看起来不是很方便,特别是如果考虑到初始设置后迁移数据库。

无论如何,here are some recommendations关于变更日志组织。