【问题标题】:Liquibase - Generate changelog from oracle schema to migrate to postgresLiquibase - 从 oracle 模式生成更改日志以迁移到 postgres
【发布时间】:2019-07-30 19:43:23
【问题描述】:
目前我正在使用 liquibase 维护的 oracle 架构。 liquibase xmls 对数据加载和使用序列等查询有一些特定于 oracle 的用法(还有一些特定于 oracle 的用法)。
我想迁移到 postgres。是否可以从 oracle 模式生成ChangeLog 以针对 postgres db(或完全特定于 liquibase 的更改日志,以便在运行时自动将其转换为目标数据库)执行它?我没有在 generatechangelog 上看到指定目标数据库类型的选项。有什么方法可以实现吗?
【问题讨论】:
标签:
oracle
postgresql
liquibase
【解决方案1】:
是的,这是可能的,尽管当您启动更改日志并考虑到多个 DBMS 时会更容易。
<createSequence> 更改应该没问题,但是如果您对.nextval 有任何显式调用,则需要进行更改。
您可以根据当前 DBMS 有条件地运行 changeSets:
<changeSet dbms="postgresql">
...
</changeSet>
或使用dbms="oracle"。我认为(虽然不确定)DBMS 属性不会更改 MD5 校验和,因此您可以更改现有的更改日志,而不会破坏现有的安装。
您需要调整当前变更日志的程度取决于您的具体情况,例如指定数据类型,例如由于显而易见的原因,您不能使用 varchar2,并且更改它将更改 MD5 校验和,这将破坏针对您现有安装运行更改日志。
我会尝试更改您必须尽可能独立于 DBMS 的更改日志,然后硬着头皮使用 clearCheckSums 对现有安装运行一次。