liquibase-入门使用

一、简介

官网:http://www.liquibase.org/
Liquibase是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制。

Liquibase具备如下特性:

  1. 不依赖于特定的数据库,目前支持包括Oracle/Sql Server/DB2/MySql/Sybase/PostgreSQL/Caché等12种数据库,这样在数据库的部署和升级环节可帮助应用系统支持多数据库。
  2. 提供数据库比较功能,比较结果保存在XML中,基于该XML你可用Liquibase轻松部署或升级数据库。
  3. 以XML存储数据库变化,其中以作者和ID唯一标识一个变化(ChangSet),支持数据库变化的合并,因此支持多开发人员同时工作。
  4. 在数据库中保存数据库修改历史(DatabaseChangeHistory),在数据库升级时自动跳过已应用的变化(ChangSet)。
  5. 提供变化应用的回滚功能,可按时间、数量或标签(tag)回滚已应用的变化。通过这种方式,开发人员可轻易的还原数据库在任何时间点的状态。
  6. 可生成数据库修改文档(HTML格式)
  7. 提供数据重构的独立的IDE和Eclipse插件

https://blog.csdn.net/u012934325/article/details/100652805

总结: 通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。

二、springboot集成Liquibase

https://blog.csdn.net/weixin_41404773/article/details/106355563

1、引入依赖

   
<!--Liquibase-->
<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
</dependency>

2、配置Springliquibasebean

@Configuration
public class LiquibaseConfig {

    @Bean
    public SpringLiquibase liquibase(DataSource dataSource) {
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setDataSource(dataSource);
        //指定changelog的位置,这里使用的一个master文件引用其他文件的方式
        liquibase.setChangeLog("classpath:liquibase/master.xml");
        liquibase.setContexts("development,test,production");
        liquibase.setShouldRun(true);
        return liquibase;
    }

}

3、在resorces中添加liquibase文件夹,然后创建changelog文件夹,在changeelog文件创建xml文件

20210805-table01.xml这个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-3.1.xsd">

    <changeSet id="20210805-01" author="test">
        <createTable tableName="dh_project_category" remarks="项目类型表">
            <column name="id" type="varchar(64)" remarks="项目类型id">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(255)" remarks="类目类型名称"/>
            <column name="status" type="int(11)" remarks="状态。1正常,2删除"/>
            <column name="remark" type="varchar(255)" remarks="备注"/>
        </createTable>
    </changeSet>

</databaseChangeLog>

Id:唯一id

Author:修改人

 4、在resources中的liquibase文件夹下创建master.xml文件夹,可以将ChangeSet分布在不同文件中。同时<include/>支持多级引用。
基于此功能可以对项目中的ChangeSet进行有效管理。推荐使用以下规范进行管理。

<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">

    <!--
    1:includeAll 标签可以把一个文件夹下的所有 changelog 都加载进来。如果单个加载可以用 include。
    2:includeAll 标签里有两个属性:path 和 relativeToChangelogFile。
        2.1:path (在 include 标签里是 file):指定要加载的文件或文件夹位置
        2.2:relativeToChangelogFile :文件位置的路径是否相对于 root changelog 是相对路径,默认 false,即相对于 classpath 是相对路径。
    -->

    <includeAll path="liquibase/changelog/" relativeToChangelogFile="false"/>

</databaseChangeLog>

5、点击启动项目:初始化liquibase的配置,启动项目会默认生成两个表

---databasechangelog:记录的是每一次表修改的记录,里面会详细记录操作的类型和操作

---databasechangeloglock: 表用于确保两台计算机不会同时尝试修改数据库。

dh_project_category:这个是刚刚自动生成的表

 

 三、liquibase常用操作

通过上面的文档介绍,我们已经知道了liquibase与springboot的集成,并且已经知道,通过master.xml对changelog文件的统一管理,我们可以支持多个不同的changelog的配置和运行,并且已经知道,changlog主要是对数据库的各自操作,接下来,主要介绍的是changelog对数据库的操作方式
1、创建表  

<changeSet id="20190713-01" author="solo">
    <createTable tableName="project_info">
        <column name="project_id" type="varchar(64)" encoding="utf8" remarks="项目id">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="project_name" type="varchar(255)" encoding="utf8" remarks="项目名字"/>
    </createTable>
</changeSet>

<createTable>表是创建表   tableName 表明

<column>  字段标签,

name:字段名称  

type:字段类型  

encoding:编码类型

remarks:字段注释

<constraints> 主键标签  

  primaryKey:是否主键

  Nullable:是否为空
2、修改表-添加列

<changeSet id="20190713-01" author="yunshan">
<addColumn tableName="project_info">
    <column name="address"  type="varchar(255)" encoding="utf8" remarks="地址"/>
</addColumn>
</changeSet>

<addColumn>  tableName 修改表名

        <column>  字段标签,

name:字段名称  

type:字段类型  

a:同一个文件中,changeSet中的id不能重复,

b: 每次数据库变更,都会在databasechangelog生成一条记录

3、修改表-删除列

<changeSet id="20190713-03" author="yunshan">
    <dropColumn tableName="project_info" columnName="address"/>
</changeSet>

4、修改表-插入数据

<changeSet id="20190713-061" author="yunshan">
    <insert tableName="project_info">
        <column name="project_id" valueNumeric="312223"/>
        <column name="project_status" valueNumeric="322434343"/>
        <column name="project_name" value="wkn"/>
    </insert>
</changeSet>

 <inSert>数据插入标签

<column>  字段标签,

name:字段名称  

valueNumeric:对应的字符值

5、修改表-通过sql脚本

 <changeSet id="20200522-02" author="yunshan">
    <sqlFile path="liquibase/sql/project_info.sql"/>
</changeSet>

<sqlFile>标签,指定需要加载的sql路径

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Liquibase是一个数据库版本控制工具,可以用来管理数据库变更。下面是Liquibase的简单使用步骤: 1. 创建一个Liquibase项目,可以使用Maven或Gradle等构建工具来创建。 2. 配置Liquibase,包括数据库连接信息、变更日志文件路径等。 3. 创建变更集,可以使用XML、YAML或JSON等格式来定义。 4. 运行Liquibase命令来执行变更集,例如执行更新命令: ``` liquibase update ``` 5. 查看数据库变更记录,可以使用命令: ``` liquibase history ``` 6. 回滚数据库变更,可以使用命令: ``` liquibase rollback <tag> ``` 其中,<tag>是变更集的标签,用于指定回滚到哪个点。 以上是Liquibase的简单使用步骤,更多详细信息请参考官方文档。 ### 回答2: Liquibase是一个开源的数据库版本控制工具,可以帮助开发人员管理数据库的演变过程。它使用XML、YAML或JSON格式的脚本文件来定义数据库结构和数据的变更,从而使数据库的追踪和同步变得更加容易。 Liquibase的简单使用可以分为以下几个步骤: 1. 引入Liquibase依赖:在项目的构建配置文件中添加Liquibase的依赖项,例如在Maven项目中,在pom.xml文件中添加Liquibase相关的依赖。 2. 创建Liquibase配置文件:在项目的根目录下创建一个名为liquibase.properties的文件,并配置数据库连接信息,如数据库驱动、URL、用户名和密码等。 3. 编写变更脚本:创建一个名为changelog.xml的文件,用于定义数据库的结构和数据的变更。可以使用Liquibase提供的各种标签和属性来描述添加表、字段、索引、约束、存储过程等操作。 4. 执行变更脚本:使用Liquibase命令行工具或API来执行变更脚本。命令行方式可以通过运行liquibase update命令来应用所有未应用的变更,API方式可以在应用程序启动时通过编程方式来初始化和执行变更脚本。 5. 查看数据库状态:可以使用Liquibase的status命令来查看数据库中已应用和未应用的变更,以及当前数据库的状态信息。 通过上述步骤,我们可以很容易地使用Liquibase来管理数据库的变更。它不仅可以帮助我们追踪数据库结构和数据的变化历史,还能够自动处理数据库的升级和回滚,大大简化了数据库的管理工作,提高了开发人员的工作效率。 ### 回答3: Liquibase是一个流行的开源数据库重构工具,可以帮助开发人员对数据库进行版本控制和管理。 使用Liquibase进行数据库重构的步骤如下: 1. 首先,需要在项目中引入Liquibase的库文件。可以通过将Liquibase的依赖添加到项目的构建文件(如pom.xml)中,或者手动下载并添加到项目中。 2. 然后,在项目的资源文件夹中创建一个Liquibase配置文件(如liquibase.properties、liquibase.yml或liquibase.xml)。配置文件中包含了数据库连接信息、变更集文件路径等配置项。 3. 创建一个变更集文件(如changelog.xml),用于存储数据库的变更历史。可以通过添加与数据库相关的标签(如创建表、修改表结构、插入数据等)来定义具体的变更操作。 4. 运行Liquibase命令行工具或使用代码方式启动Liquibase,执行变更集文件中的变更操作。Liquibase会根据变更集文件中定义的变更操作,自动检测数据库的当前状态,并将其与变更集文件中的期望状态进行比对,然后执行必要的变更操作以使数据库达到期望状态。 5. 可以使用Liquibase提供的其他功能,如回滚变更、生成数据库文档等。 总结来说,Liquibase简单使用的步骤包括引入Liquibase库文件、创建配置文件、定义变更集文件,然后通过运行Liquibase命令行工具或使用代码方式执行变更操作。Liquibase可以帮助开发人员在多人协作或持续集成环境中轻松管理和控制数据库的变更。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值