Liquibase的简单使用

网友投稿 251 2022-10-09

Liquibase的简单使用

​Liquibase的简单使用 ​

目录

​​将项目需要的表结构或数据(数据字段类型数据),通过日志自动同步到数据库。​​

​​LiquiBase​​是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下:

支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;支持多开发者的协作维护;日志文件支持多种格式,如XML, YAML, JSON, SQL等;支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。

更多详情介绍,可以浏览​​官网doc​​。

之所以选择使用liquibase,原因其实挺尴尬的,由于我不会使用容器化技术,不会写dockfile来运行项目初始化sql脚本,就想有没有什么简单方便的形式,最后看中了liquibase,配置起来确实简单方便。

我是用命令行的形式生成changeLog,然后再集成到springboot中。官网上提供的还有基于ant、maven和服务端的使用的方式,以后再研究。

1.     下载liquibase的安装包,解压到指定目录下;

2. 通过​​generateChangeLog​​生成现有数据库的changeLog文件;

3. liquibase --driver=com.mysql.jdbc.Driver --classpath=mysql-connector-java-5.1.27.jar --changeLogFile=./dbchangelog.xml --url="jdbc:mysql://localhost:3306/blog" --username=root --password=root generateChangeLog

generateChangeLog命令默认只会创建数据库结构的变更日志文件,如果希望创建插入数据的变更日志文件,可以使用参数diffTypes,该参数包括如下可选项:

· tables [DEFAULT]表

· columns [DEFAULT] 列

· views [DEFAULT] 视图

· primaryKeys [DEFAULT] 主键

· indexes [DEFAULT] 索引

· foreignKeys [DEFAULT]

· sequences [DEFAULT]

·       data

例如生成数据:

· liquibase --driver=com.mysql.jdbc.Driver --classpath=mysql-connector-java-5.1.27.jar --changeLogFile=./dbchangelog.xml --url="jdbc:mysql://localhost:3306/blog" --username=root --password=root --diffTypes=data generateChangeLog

我分别生成了两个changeLog文件,一个是inti-table.xml; 一个是init-data.xml。

3.项目中配置liquibase

首先在项目中添加支持:

org.liquibase

liquibase-core

通过查看源码,我们能看到默认的配置文件存放的位置:

这里我没有使用默认的配置,指定了一个自己的路径,只需要在application.properties中添加如下配置:

#liquibase

liquibase.change-log=classpath:/liquibase/master.xml

--master.xml文件内容,通过inclue标签引入了两个changelog,就是之前的表结构和表数据。

xmlns="file="classpath:liquibase/change_log/init-table.xml" relativeToChangelogFile="false"/>

项目中的目录结构如下图所示:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何使用 Kubernetes 监测定位慢调用
下一篇:Spring Data JPA实现持久化存储数据到数据库的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~