蚂蚁比较数据库和使用liquibase生成sql脚本
发布时间:2020-05-25 03:31:05 所属栏目:MsSql 来源:互联网
导读:我正在比较两个数据库,使用与蚂蚁整合的liquibase.但是它产生的输出就像通用格式.它不是给出sql语句.请任何人告诉我如何比较使用与蚂蚁或命令行实用程序集成的liquibase的两个数据库. 用一些例子解释一下 获取表示两个数据库之间的差异的SQL语句是一个两步操
|
我正在比较两个数据库,使用与蚂蚁整合的liquibase.但是它产生的输出就像通用格式.它不是给出sql语句.请任何人告诉我如何比较使用与蚂蚁或命令行实用程序集成的liquibase的两个数据库. 用一些例子解释一下 解决方法获取表示两个数据库之间的差异的SQL语句是一个两步操作:>生成XML“diff”changelog 例 此示例需要一个liquibase.properties文件(简化command-line参数): classpath=/path/to/jdbc/jdbc.jar driver=org.Driver url=jdbc:db_url1 username=user1 password=pass1 referenceUrl=jdbc:db_url2 referenceUsername=user2 referencePassword=pass2 changeLogFile=diff.xml 现在运行以下命令创建SQL语句: liquibase diffChangeLog liquibase updateSQL > update.sql 液碱的一个很好的特点是它也可以生成回滚SQL: liquibase futureRollbackSQL > rollback.sql 更新 Liquibase不会在数据库之间生成数据差异,只能生成模式.但是,可以将数据库数据转储为一系列变更集: liquibase --changeLogFile=data.xml --diffTypes=data generateChangeLog 可以使用data.xml文件来迁移新表中包含的数据. 更新2: 也可以使用groovy生成液相变体集. import groovy.sql.Sql
import groovy.xml.MarkupBuilder
//
// DB connection
//
this.class.classLoader.rootLoader.addURL(new URL("file:///home/path/to/h2-1.3.162.jar"))
def sql = Sql.newInstance("jdbc:h2:db/db1","user","pass","org.h2.Driver")
//
// Generate liquibase changeset
//
def author = "generated"
def id = 1
new File("extract.xml").withWriter { writer ->
def xml = new MarkupBuilder(writer);
xml.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-2.0.xsd"
) {
changeSet(author:author,id:id++) {
sql.eachRow("select * from employee") { row ->
insert(tableName:"exmployee") {
column(name:"empno",valueNumeric:row.empno)
column(name:"name",value:row.name)
column(name:"job",value:row.job)
column(name:"hiredate",value:row.hiredate)
column(name:"salary",valueNumeric:row.salary)
}
}
}
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
