Liquibase学习并使用

1、关于Liquibase

适用场景

开发过程经常会有表结构和变更,让运维来维护的话,通常会有很大的沟通成本,有时在开发方案有问题的时候,提测失败整个项目需要回滚,代码回滚起来是很容易的,通常有备份,但数据库的话就要人工来逐行分析并写出回滚语句,Liquibase 这时候就有用了。

Liquibase是用于数据库重构和迁移的数据工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的数据库修改,将数据库更新或回滚到一致的状态,主要用于项目中上线初始化数据库,后续程序数据库升级与回退迁移,更加方便开发者高效、安全的进行数据库升级与回滚

liquibase主要特点

  • 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
  • 提供数据库比较功能,比较结果保存在XML中,基于该XML你可用Liquibase轻松部署或升级数据库。
  • 以XML存储数据库变化,其中以作者和ID唯一标识一个变化(changset),支持数据库变化的合并,因此支持多开发人员同时合作。
  • 提供变化应用的回滚功能,可按时间,数量或标签(tag)回滚已应用的变化。通过这种方式,开发人员可轻易的还原数据库在任何时间点的状态
  • 日志文件支持多种格式,如xml、yaml、json、sql等(sql格式2.0以后支持);
  • 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等;

changelog文件格式

changelog是LiquiBase用来记录数据库的变更,一般放在CLASSPATH下,然后配置到执行路径中。

changelog支持多种格式,主要有XML/JSON/YAML/SQL,其中XML/JSON/YAML除了具体格式语法不同,节点配置很类似,SQL格式中主要记录SQL语句,这里仅给出XML格式和SQL格式的示例,更多的格式示例请参考 官方文档

changelog.xml格式
<changeSet author="tzt" id="1">
    <createTable schemaName="ihome" tableName="user">
        <column autoIncrement="true" name="id" type="INT">
            <constraints primaryKey="true"/>
        </column>
        <column name="name" type="VARCHAR(30)"/>
    </createTable>
</changeSet>
changelog.sql格式

格式化的SQL文件使用注释为Liquibase提供元数据。每个SQL文件必须以以下注释开头:

--liquibase formatted sql
--changeset tzt:1
drop table if exists `user`;
CREATE TABLE user
(
	id  INT(9) NOT NULL COMMENT '主键ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值