Liquibase-从Oracle模式生成变更日志以迁移到Postgres

时间:2019-03-08 18:21:28

标签: oracle postgresql liquibase

当前,我使用的是由liquibase维护的oracle模式。 liquibase xml在查询中有一些特定于oracle的用法,用于数据加载和使用序列等(也有一些特定于oracle的用法)。

我想转到postgres。是否有可能从oracle模式中生成ChangeLog以针对postgres db(或完全基于liquibase的changelog来执行它),以便在运行时将其自动转换为目标数据库?我看不到在generatechangelog上指定目标数据库类型的选项。有什么方法可以实现?

1 个答案:

答案 0 :(得分:0)

是的,虽然您在考虑多个DBMS的情况下启动更新日志比较容易,但是这是可能的。

<createSequence>的更改应该可以,但是,如果您有对.nextval的任何明确调用,则需要对其进行更改。

您可以根据当前的DBMS有条件地运行changeSet:

<changeSet dbms="postgresql">
...
</changeSet>

或使用dbms="oracle"。我认为(虽然不确定)DBMS属性不会更改MD5校验和,因此您可以更改现有的更改日志,而不会破坏现有的安装。

您需要调整当前变更日志的数量取决于您在例如指定数据类型,例如您出于明显的原因不能使用varchar2,并且更改更改为MD5校验和,这将破坏对现有安装运行更改日志。

我将尝试更改您必须尽可能独立于DBMS的更改日志,然后咬紧牙关,并使用clearCheckSums对现有安装运行一次。