我可以自动将XML format中的Liquibase更改日志文件转换为YAML format吗?
答案 0 :(得分:9)
内置任何内容,但您可以通过一些脚本轻松完成。
一些起点:
liquibase.parser.ChangeLogParserFactory.getInstance().getParser(".xml", resourceAccessor).parse(...)
将返回表示changelog文件的DatabaseChangeLog对象。
liquibase.serializer.ChangeLogSerializerFactory.getInstance().getSerializer(".yaml").write(...)
会将DatabaseChangeLog对象中的changeSets输出为yaml格式的文件
答案 1 :(得分:8)
我知道答案有点晚了;然而,我正在考虑将Liquibase用于工作项目,并且正在寻找能够做他想要的东西的东西。我看到了Nathan Voxland的回答并创建了一个用Java编写的命令行实用程序来转换它。代码可以在Github上的here找到。随意修改或修复它并发送PR;我确实在一个小时左右写了它,所以请轻松判断代码库:)。希望这将有助于下一个寻找类似工具的人,并在这里绊倒。
答案 2 :(得分:2)
智能方式是直接生成yaml而不是xml,Liquibase提供了这个功能OOB。
您只需要将输出changeLogFile文件的扩展名更改为.yaml
,liquibase就能很好地理解您(使用liquibase-3.6.0 进行测试)。
例如:我为Postgres DB运行了此命令:
liquibase --driver=org.postgresql.Driver
--classpath=\path\to\postgresql-9.0-801.jdbc4.jar
--changeLogFile=D:\Liquibase\changeLog.yaml
--url="jdbc:postgresql://localhost:5432/db_name"
--username=postgres
--password=postgres
--logLevel=debug generateChangeLog
警告:为了便于阅读,添加了新行。
现在您知道如果将输出文件的扩展名更改为.xml
PS:如果liquibase命令不起作用,请尝试使用java -jar liquibase.jar
。