Liquibase diff是否给您两个数据库之间的数据差异?

时间:2018-12-14 07:00:12

标签: liquibase

我正在尝试将数据从一个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 =密码diffChangeLog --referenceDriver = oracle.jdbc.OracleDriver --referenceUrl = jdbc:oracle:thin:CMS/password@172.18.41.67:1521 / ORCL --referenceUsername = cms --referencePassword = password --diffTypes = data从2018年12月14日星期五开始17:55:18 AEDT(版本3.6.2   建于2018-07-03 11:28:09)错误:包含'diffTypes = data'   diffChangeLog命令无效。此选项只能是   与'generateChangeLog'命令一起使用。

@SteveDonie

1 个答案:

答案 0 :(得分:0)

错误消息是正确的。无法使用diffChangeLog命令在两个数据库之间进行数据差异。

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