Liquibase diff 是否为您提供两个数据库之间的数据差异?
Does Liquibase diff give you data difference between two dbs?
我正在尝试将数据从一个 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
现在我使用更新SQL生成了这个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=password --diffTypes=data Starting Liquibase at Fri, 14 Dec 2018 17:55:18 AEDT (version 3.6.2
built at 2018-07-03 11:28:09) Errors: Including 'diffTypes=data' in
the diffChangeLog command has no effect. This option should only be
used with the 'generateChangeLog' command.
@SteveDonie
错误消息是准确的。不能用diffChangeLog
命令做两个数据库的数据差异。
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
现在我使用更新SQL生成了这个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=password --diffTypes=data Starting Liquibase at Fri, 14 Dec 2018 17:55:18 AEDT (version 3.6.2 built at 2018-07-03 11:28:09) Errors: Including 'diffTypes=data' in the diffChangeLog command has no effect. This option should only be used with the 'generateChangeLog' command.
@SteveDonie
错误消息是准确的。不能用diffChangeLog
命令做两个数据库的数据差异。
Liquibase 确实不是一个适合处理大量数据的工具。它主要用作模式更改管理工具。