`
dalan_123
  • 浏览: 87078 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Liquibase

阅读更多

一、Liquibase

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

Liquibase具备如下特性:   

* 不依赖于特定的数据库,目前支持包括Oracle/Sql Server/DB2/MySql/Sybase/PostgreSQL/Caché等12种         数据库,这样在数据库的部署和升级环节可帮助应用系统支持多数据库。   

* 提供数据库比较功能,比较结果保存在XML中,基于该XML你可用Liquibase轻松部署或升级数据库。   

* 以XML存储数据库变化,其中以作者和ID唯一标识一个变化(ChangSet),支持数据库变化的合并,因此      支持多开发人员同时工作。   

* 在数据库中保存数据库修改历史(DatabaseChangeHistory),在数据库升级时自动跳过已应用的变化     (ChangSet)。   

* 提供变化应用的回滚功能,可按时间、数量或标签(tag)回滚已应用的变化。通过这种方式,开发人员可        轻易的还原数据库在任何时间点的状态。   

* 可生成数据库修改文档(HTML格式)   

* 提供数据重构的独立的IDE和Eclipse插件

二、使用在使用的过程中,Liquibase的作用就像是写好sql或者DML语句来完成数据库的更新,那么通俗些来说:将数据库schema的改变(table的创建、column的改变、index的改变......)以及数据本身内容的改变(insert 、 update 、 delete),用Liquibase定义的语法写成xml格式的=change log,同时也会在数据库中创建一张databasechangelog的table,用来记录db更新了那些change log,当xml新增更多的change log后,跟db里的版本比较,就可得知那些未同步的change log有哪些,下次同步时,就会同步这些未同步的change log,在这点上,Liquibase和现在大名鼎鼎的git很相似。

在这里需要注意一点:change log的文档,一旦同步过后,文档中对应的id以及文档路径等tag改变,那么文档中的改变就会当成新的change log,再次被同步到数据库中

三、使用

  1、同步xml到db

   (1)  创建table

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

  <!-- 建立 uesr table -->
    <changeSet id="create-user-table" author="kent">
        <createTable tableName="user">
            <column name="first_name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="last_name" type="varchar(50)">
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

 
如上操作即可完成 create table的操作 在结合maven使用时,执行mvn liquibase:update,db里面会产生三张table

    databasechangelog是記錄同步用的,

    databasechangeloglock是做locking的

   user 則是上面的change log中的createTable建立的

其中前两个时liquibase管理,不需要管理,不过有兴趣的话 可以看下对应的表记录,就可以发现每次同步的操作都有记录

  (2)  update table

  若是这个时候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">

   <!--省略前面的create table的操作-->
    <!-- 在user table加入 address column -->
    <changeSet id="addColumn-example" author="kent">
        <addColumn catalogName="mydb" schemaName="public" tableName="user">
            <column name="address" type="varchar(255)"/>
        </addColumn>
    </changeSet>

</databaseChangeLog>
 

 那么在此执行 mvn liquibase:update 后,user table就会多出新增的column。在这里需要注意点,由于create-user-table author=&quot;kent&quot;前面被执行过来,同时对应的内容未发生改变,所以不会在此被执行。

  (3)  insert table

<?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">
    <!-- insert兩筆測試資料 -->
    <changeSet id="insert-example" author="kent" >
        <insert catalogName="mydb" schemaName="public" tableName="user">
            <column name="first_name" value="kent"/>
            <column name="last_name" value="chiu"/>
        </insert>
        <insert catalogName="mydb" schemaName="public" tableName="user">
            <column name="first_name" value="cindy"/>
            <column name="last_name" value="chiu"/>
        </insert>
    </changeSet>
</databaseChangeLog>

 
mvn liquibase:update 之后 数据库会增加两条记录

关于版本说明

在实际上,只要db的schema有做改变的,都是从xml进行改变,那么若是资料内容发生改变,则根据实际情况看要不要从change log改变。必要的预设资料可以在change log中进行设定。通过insert tag来建,减少每次重建table都要重新添加数据的步骤;同时也可结合其他指令,使数据库回到特定的版本,是不是和git很像

四、从数据库产生changelog.xml

对于现有的db,可以通过generateChangeLog从数据库中产生change log ,再以这个change log为基础,针对后续的改变,再通过liquibase管理(xml -- db);需要注意在通过generateChangeLog进行导出时,预设时只有schema(table/view/column/index/foreignkey/primarykey/uniqueconstraint),在产生数据时,不需要指定diffTypes参数,若是有其他的内容需要产生,则必须指定diffTypes参数

若是想只导出数据

diffTypes = data,只有数据,没有schema的信息;数据也可导出csv或者导入csv

只生成数据
mvn liquibase:generateChangeLog -Dliquibase.diffTypes=data

同时生产schema和datas
mvn liquibase:generateChangeLog -Dliquibase.diffTypes=tables,views,columns,indexs,foreignkeys,primarykeys,uniqueconstraints,data
----------------------------------------------------------------------------------
以上只是liquibase的简单描述,详情请见:http://www.liquibase.org/documentation/databasechangelog.html




 

 

分享到:
评论

相关推荐

    liquibase API 帮助文档

    ### Liquibase API 使用详解 Liquibase 是一款用于数据库版本控制的强大工具,它可以帮助开发者们自动化地管理和应用数据库模式变更。本文将详细介绍如何利用 Liquibase 的 API 来操作数据库,包括更新、删除、插入...

    liquibase-modify-column-3.1.zip

    Liquibase 是一个强大的数据库版本控制工具,它允许开发者管理和跟踪数据库结构的变化,使得数据库与代码同步变得更加简单。在本案例中,"liquibase-modify-column-3.1.zip" 文件包含的是 Liquibase 的一个特定功能...

    SpringBoot整合liquibase的实现方法

    SpringBoot整合Liquibase的实现方法 Liquibase是一个开源的数据库重构和迁移工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型...

    liquibase plugin for eclipse

    Liquibase 是一个开源数据库版本控制工具,它允许开发者跟踪、管理和部署数据库结构的变化。Eclipse 是一个广泛使用的集成开发环境(IDE),尤其在Java开发领域。"Liquibase plugin for Eclipse" 就是专门为Eclipse...

    独家liquibase操作手册.rar

    Liquibase是一款强大的数据库版本控制工具,它允许开发者管理和跟踪数据库结构的变化,类似于Git对代码的版本控制。本文档将全面介绍Liquibase的基础概念、安装、配置、使用方法以及高级特性,帮助初学者快速上手。 ...

    liquibase-4.2.0.rar

    Liquibase是一款强大的数据库版本控制工具,用于管理数据库结构的变化。它允许开发人员跟踪、管理和部署数据库更改,就像他们管理应用程序代码一样。Liquibase 4.2.0是该工具的一个版本,提供了许多功能和改进,使得...

    liquibase-3.1.1-bin.zip

    Liquibase是一款强大的开源数据库版本控制工具,它允许开发者对数据库结构进行版本管理,类似于代码版本控制系统如Git。"liquibase-3.1.1-bin.zip" 是Liquibase的一个发行版,包含了运行该工具所需的文件。以下是这...

    liquibase-3.5.3-bin

    Liquibase是一款强大的开源数据库版本控制工具,它允许开发者对数据库结构进行版本管理,类似于代码版本控制系统如Git。"liquibase-3.5.3-bin"是Liquibase的一个特定版本,包含可执行文件和其他必需的组件,方便用户...

    liquibase-3.4.2-bin.zip(Nov 24, 2015)

    Liquibase是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制。 Liquibase具备如下特性: * 不依赖于特定的数据库,目前支持...

    composite-liquibase-1.4.zip

    《复合 Liquibase 1.4:蚂蚁、蚂蚁贡献者与撒克逊的融合》 开源项目的世界里,创新与合作是推动技术进步的关键动力。在我们的主题“composite-liquibase-1.4.zip”中,我们可以看到一个独特的组合,它将“蚂蚁”...

    在Web项目中使用LiquiBase实现数据库自动更新

    LiquiBase是一款流行的开源工具,专门用于管理数据库的变更,确保在多环境、多团队协作中保持数据结构的一致性。本文将深入探讨如何在Web项目中集成并使用LiquiBase来实现数据库的自动更新。 LiquiBase通过跟踪和...

    liquibase.rar

    Liquibase是一款强大的数据库版本控制工具,用于管理数据库结构的变化。它允许开发人员跟踪、管理和部署数据库更改,就像他们管理应用程序代码一样。在"liquibase.rar"这个压缩包中,我们很可能是找到了Liquibase的...

    Liquibase 3.4.2

    Liquibase是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制。 Liquibase具备如下特性: * 不依赖于特定的数据库,目前支持...

    Liquibase mysql 版本管理插件

    Liquibase mysql 版本管理插件 ,springboot 配置 Springcloud 配置

    Liquibase 3.3.3 bin

    Liquibase是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制。 Liquibase具备如下特性: * 不依赖于特定的数据库,目前支持...

    LiquiBase数据库版本管理组件使用示例

    LiquiBase数据库版本管理组件使用示例和详细介绍 1、语法简单,开箱即用 2、功能强大,满足日常数据库脚本变更需求 3、版本管理方便,每次修改都有记录 4、与项目集成,项目启动执行数据库变更,发布省去手动初始化...

    liquibase操作文档

    liquibase操作文档,详细介绍如何使用liquibase重构数据库。

    liquibase-core-3.8.9.zip

    总的来说,"liquibase-core-3.8.9.zip"这个压缩包为Java开发者提供了一个强大的数据库版本控制工具,通过"liquibase-core-3.8.9.jar"、"liquibase-core-3.8.9-javadoc.jar"和"liquibase-core-3.8.9-sources.jar"这三...

    liquibase操作手册.docx

    Liquibase是一个强大的数据库版本管理工具,它允许开发者跟踪、控制和部署数据库的变化。通过使用Liquibase,你可以确保数据库的结构与代码的同步,从而提高软件开发的效率和质量。以下是对Liquibase操作手册中提及...

    HAP框架-Liquibase入门手册.doc

    **HAP框架与Liquibase入门** HAP框架(High Availability Platform)是一个专注于提供高可用性和可扩展性的软件开发框架。Liquibase是HAP框架中用于数据库版本控制的工具,它允许开发者管理数据库结构的变化,确保...

Global site tag (gtag.js) - Google Analytics