当前,我使用的是由liquibase维护的oracle模式。 liquibase xml在查询中有一些特定于oracle的用法,用于数据加载和使用序列等(也有一些特定于oracle的用法)。
我想转到postgres。是否有可能从oracle模式中生成ChangeLog以针对postgres db(或完全基于liquibase的changelog来执行它),以便在运行时将其自动转换为目标数据库?我看不到在generatechangelog上指定目标数据库类型的选项。有什么方法可以实现?
答案 0 :(得分:0)
是的,虽然您在考虑多个DBMS的情况下启动更新日志比较容易,但是这是可能的。
<createSequence>
的更改应该可以,但是,如果您有对.nextval
的任何明确调用,则需要对其进行更改。
您可以根据当前的DBMS有条件地运行changeSet:
<changeSet dbms="postgresql">
...
</changeSet>
或使用dbms="oracle"
。我认为(虽然不确定)DBMS属性不会更改MD5校验和,因此您可以更改现有的更改日志,而不会破坏现有的安装。
您需要调整当前变更日志的数量取决于您在例如指定数据类型,例如您出于明显的原因不能使用varchar2
,并且更改将更改为MD5校验和,这将破坏对现有安装运行更改日志。
我将尝试更改您必须尽可能独立于DBMS的更改日志,然后咬紧牙关,并使用clearCheckSums
对现有安装运行一次。