Liquibase-数据库版本管理工具3-changeSet-变更集详解

38次阅读

共计 2240 个字符,预计需要花费 6 分钟才能阅读完成。

上篇文章中具体了介绍了一下 changelog 文件的应用,本篇文章将具体说一下 changeSet 变更集 中的细节,以及通常的应用形式

1. 变更集分类

changeSet 分为 6 类:

  • add
  • create
  • drop
  • rename
  • sql
  • other

官网文档:https://docsstage.liquibase.c…, 每一个标签都有其必须的参数 ,应用时依据状况自行设定即可

用法均为如下格局:

<changeSet>
    <xxxx />
</changeSet>

2.1 add

标签 形容
addAutoIncrement 将一个已存在的列转换为自增
addColunm 减少列
addDefaultValue 对已存在的列减少默认值
addForeignKeyConstraint 对已存在的列减少外键束缚
addLookupTable 创立外键关联的表
addNotNullConstraint 对已存在的列减少非空束缚
addPrimaryKey 对已存在的列减少主键束缚
ddUniqueConstraint 对已存在的列减少主键束缚

2.2 create

标签 形容
createIndex 创立索引
createProcedure 创立存储过程
createSequence 创立序列
createTable 创立表
createView 创立视图

2.3 drop

标签 形容
dropAllForeignKeyConstraints 删除全副的外键束缚
dropColumn 删除列
dropDefaultValue 删除默认值设置
dropForeignKeyConstraint 删除某一列的外键束缚
dropNotNullConstraint 删除非空束缚
dropIndex 删除索引
dropSequence 删除束缚
dropProcedure 删除存储过程
dropPrimaryKey 删除主键
dropTable 删除表
dropUniqueConstraint 删除唯一性束缚
dropView 删除视图

2.4 rename

标签 形容
renameColumn 重命名列
renameSequence 重命名序列
renameTable 重命名表
renameView 重命名视图

2.5 sql

标签 形容
sql 原生 SQL
sqlFile 引入 SQL 文件

2.6 Other

标签 形容 标签 形容
alterSequence 批改序列 customChange 自定义 change 类型,须要本人实现 liquibase.change.custom.CustomSqlChange、liquibase.change.custom.CustomTaskChange 接口
delete 删除数据 empty 空操作
executeCommand 执行系统命令,如 mysqldump insert 插入数据
loadData 加载 csv 文件到已存在的表中 loadUpdateData 加载 csv 文件到已存在的表中,然而会判断是否存在,存在更新,否则新增
mergeColumns 将两列值合并在一起,存入新列中 modifyDataType 批改列数据类型
output 记录一条音讯并继续执行 setColumnRemarks 列上增加备注
setTableRemarks 表上增加备注 stop 通过音讯进行 Liquibase
tagDatabase 将标签利用于数据库以供将来回滚 update 更新数据

2. 罕用变更集

下面这么多的标签,置信曾经将很多人的眼睛看花了,不要紧,将它们全副列举出次要还是想大家可能对 Liquibase 有一个更全面的了解,遇到某些场景时可能对症检索。

接下来我会介绍几个罕用的标签,根本可能笼罩大多数场景。

2.1 SQL

最罕用以及最棘手的就是 sql 标签,开发人员像应用 Mybatis 一样,写原生 SQL,然而如果 SQL 比较复杂,可读性就不怎么好

<changeSet id="xxxx" author="jiaotd" labels="init" >
        <sql>
            USE `db_xxx`;
              insert into table_t values(1,1,1);
        </sql>
 </changeSet>

2.2 sqlFile

sqlFIle 就是将下面 SQL 中的语句独自应用文件存储,在 sqlFIle 引入。

这样做的益处是 changelog 文件简略、整洁、可读性高、易于保护。

 <changeSet id="xxxx" author="jiaotd" labels="init" >
    <sqlFile path="update/xxxx.sql" relativeToChangelogFile="true"/>
 </changeSet>

2.3 loadData

loadData 通常用于导入数据,个别咱们用于系统升级时导入大量的数据。

<changeSet  author="jiaotd"  id="loadData-xxx">  
    <loadData commentLineStartsWith="//"  
            encoding="UTF-8"  
            file="example/users.csv"  
            quotchar="'"relativeToChangelogFile="true"schemaName="public"separator=";"tableName="person"usePreparedStatements="true">  
        <column  header="header1"  
                name="id"  
                type="NUMERIC"/>  
        <column  index="3"  
                name="name"  
                type="BOOLEAN"/>  
    </loadData>  
</changeSet>

正文完
 0