如何使用 java 代码以编程方式创建 liquibase dbchangelog?
How to create the liquibase dbchangelog programatically using java code?
我最近使用 liquibase
更改设置为 generateChangelog
、diff
和 updateSQL
来创建更改日志、查找差异并生成 ddl 脚本分别
我的更改日志看起来像这样,它是一个 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet author="John (generated)" id="1439225004329-1">
<createTable tableName="Author ">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints primaryKey="true"/>
</column>
<column name="name" type="VARCHAR(255)"/>
</createTable>
</changeSet>
</databaseChangeLog>
我手动创建了这个 xml。我试图通过 java 代码创建相同的更改日志。
在 java 中,我很难弄清楚如何做到这一点。有人可以解释一下吗?
我已将 liquibase 3.5.5
作为 maven dependency
添加到我的项目中。
这个呢?
final Path changeLogPath = Paths.get("/tmp/mychangelog.xml");
final DatabaseChangeLog changeLog = new DatabaseChangeLog(changeLogPath.toString());
changeLog.setPhysicalFilePath("mychangelog.xml");
final CreateTableChange createTableChange = new CreateTableChange();
createTableChange.setTableName("firsttable");
createTableChange.addColumn(new ColumnConfig().setName("col1").setType("VARCHAR(20)"));
final ChangeSet changeSet = new ChangeSet("id1", "author", Boolean.FALSE, Boolean.FALSE, null, null, null, changeLog);
changeSet.addChange(createTableChange);
try (OutputStream os = new FileOutputStream(changeLogPath.toString())){
serializer.write(changeLog.getChangeSets(), os);
}
我最近使用 liquibase
更改设置为 generateChangelog
、diff
和 updateSQL
来创建更改日志、查找差异并生成 ddl 脚本分别
我的更改日志看起来像这样,它是一个 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet author="John (generated)" id="1439225004329-1">
<createTable tableName="Author ">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints primaryKey="true"/>
</column>
<column name="name" type="VARCHAR(255)"/>
</createTable>
</changeSet>
</databaseChangeLog>
我手动创建了这个 xml。我试图通过 java 代码创建相同的更改日志。 在 java 中,我很难弄清楚如何做到这一点。有人可以解释一下吗?
我已将 liquibase 3.5.5
作为 maven dependency
添加到我的项目中。
这个呢?
final Path changeLogPath = Paths.get("/tmp/mychangelog.xml");
final DatabaseChangeLog changeLog = new DatabaseChangeLog(changeLogPath.toString());
changeLog.setPhysicalFilePath("mychangelog.xml");
final CreateTableChange createTableChange = new CreateTableChange();
createTableChange.setTableName("firsttable");
createTableChange.addColumn(new ColumnConfig().setName("col1").setType("VARCHAR(20)"));
final ChangeSet changeSet = new ChangeSet("id1", "author", Boolean.FALSE, Boolean.FALSE, null, null, null, changeLog);
changeSet.addChange(createTableChange);
try (OutputStream os = new FileOutputStream(changeLogPath.toString())){
serializer.write(changeLog.getChangeSets(), os);
}