目前我在使用liquibase维护的oracle架构。 liquibase xmls对dataload和使用序列等的查询具有一些oracle特定用法(也是oracle特有的一些用法)。
我想搬到postgres。是否有可能从oracle模式中生成更改日志以针对postgres数据库执行它(或者是完全特定于liquibase的更改日志,以便它在运行时自动将其转换为目标数据库)?我没有看到在generatechangelog上指定目标数据库类型的选项。有没有办法实现这一目标?
是的,这是可能的,尽管在您考虑多个DBMS的情况下启动更改日志时更容易。
<createSequence>
更改应该没问题,但是如果你有任何明确的调用.nextval
那些需要改变。
您可以根据当前的DBMS有条件地运行changeSet:
<changeSet dbms="postgresql">
...
</changeSet>
或使用dbms="oracle"
。我认为(不确定)DBMS属性不会更改MD5校验和,因此您可以更改现有的更改日志,而不会破坏现有安装。
您需要调整当前更改日志的程度取决于您的具体情况,例如指定数据类型,例如你不能出于显而易见的原因使用varchar2
,并且更改它将改变MD5校验和,这将破坏对现有安装运行更改日志。
我会尝试更改您必须尽可能多的DBMS独立更改日志,然后咬住子弹并使用clearCheckSums
对现有安装运行一次。