【问题标题】:Does Liquibase diff give you data difference between two dbs?Liquibase diff 是否为您提供两个数据库之间的数据差异?
【发布时间】:2019-01-05 02:22:43
【问题描述】:

我正在尝试将数据从一个 oracle 数据库迁移到另一个。我使用以下方法产生了它们之间的差异:

./liquibase --driver=oracle.jdbc.OracleDriver --url=jdbc:oracle:thin:CMS/password@docker-ygupta.domain.com:1522/ORCL --username=cms --password=password diffChangeLog --referenceDriver=oracle.jdbc.OracleDriver --referenceUrl=jdbc:oracle:thin:CMS/password@172.18.41.67:1521/ORCL  --referenceUsername=cms --referencePassword=password > dchangelog.xml

现在我使用 updateSQL 生成了这个 dchangelog.xml 的 sql,如下所示:

<username>cms</username>
<password>password</password>
<url>jdbc:oracle:thin:CMS/password@172.18.41.111:1522/ORCL</url>
<execution>
        <id>process</id>
        <phase>generate-resources</phase>
        <goals>
            <goal>updateSQL</goal>
        </goals>
        <configuration>
            <username>cms</username>
            <password>password</password>
            <driver>oracle.jdbc.OracleDriver</driver>
            <url>jdbc:oracle:thin:CMS/password@docker-ygupta.domain.com:1522/ORCL</url>
            <changeLogFile>${output.change.log.file}.xml</changeLogFile>
            <migrationSqlOutputFile>${output.change.log.file}.sql</migrationSqlOutputFile>
            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
        </configuration>
</execution>

我在这个 SQL 中得到的只是列、外键、唯一约束、索引等的差异。我想要的是没有生成的数据。

我查看了上面写着here的文档:

目前,Liquibase 运行以下比较:

Version Differences
Missing/unexpected tables
Missing/unexpected views
Missing/unexpected columns
Missing/unexpected primary keys
Missing/unexpected unique constraints
Missing/unexpected foreign Keys
Missing/unexpected sequences
Missing/unexpected indexes
Column definition differences (data type, auto-increment, etc.)
View definition differences
**Data differences (limited), not checked by default**

是否支持,因为如果我尝试从命令行运行它会给出错误:

[ygupta@nrvdevops02 WS]$ ./liquibase --driver=oracle.jdbc.OracleDriver --url=jdbc:oracle:thin:CMS/password@docker-ygupta.domain.com:1522/ORCL --username=cms --password=password diffChangeLog --referenceDriver=oracle.jdbc.OracleDriver --referenceUrl=jdbc:oracle:thin:CMS/password@172.18.41.67:1521/ORCL --referenceUsername=cms --referencePassword=密码 --diffTypes=data 在 2018 年 12 月 14 日星期五 17:55:18 AEDT 开始 Liquibase(版本 3.6.2 建于 2018-07-03 11:28:09)错误:包括 'diffTypes=data' 在 diffChangeLog 命令无效。这个选项应该只 与“generateChangeLog”命令一起使用。

@史蒂夫多尼

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    错误信息是准确的。不能使用diffChangeLog 命令来做两个数据库之间的数据差异。

    Liquibase 确实不是处理大量数据的合适工具。它主要用作模式更改管理工具。

    【讨论】:

      猜你喜欢
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2013-10-31
      • 2021-11-28
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多