1.简介
Flyway 是一个开源的数据库迁移工具。它强烈支持简单性和约定而不是配置。它仅基于 7 个基本命令: Migrate、 Clean、 Info、 Validate、 Undo、 Baseline和 Repair。
迁移可以用SQL (支持特定于数据库的语法(例如 PL/SQL、T-SQL 等))或Java (用于高级数据转换或处理 LOB)编写。
它有一个命令行客户端。如果您使用的是 JVM,我们建议您使用Java API 在应用程序启动时迁移数据库。或者,您也可以使用Maven 插件 或Gradle 插件。
如果这还不够,还有 适用于 Spring Boot、Dropwizard、Grails、Play、SBT、Ant、Griffon、Grunt、Ninja 等的插件!
Flyway的GitHub地址如下:
1 |
|
2.数据迁移
Flyway 对数据库的所有更改都称为迁移。迁移可以是版本化的或 可重复的。版本化迁移有两种形式:常规和撤消。
版本化迁移有一个版本、一个描述和一个校验和。版本必须是唯一的。该描述纯粹是提供信息,让您能够记住每次迁移的作用。校验和用于检测意外更改。版本化迁移是最常见的迁移类型。它们只按顺序应用一次。
可选地,可以通过提供具有相同版本的撤消迁移来撤消它们的影响。可重复的迁移有描述和校验和,但没有版本。不是只运行一次,而是在每次校验和更改时(重新)应用它们。
在单个迁移运行中,可重复的迁移总是最后应用,在所有挂起的版本化迁移都已执行之后。可重复迁移按其描述的顺序应用。默认情况下,版本化和可重复迁移都可以用SQL 或Java编写,并且可以由多个语句组成。
Flyway 自动发现文件系统和 Java类路径上的迁移。为了跟踪哪些迁移已在何时以及由谁应用,Flyway 向您的架构添加了一个架构历史记录表。
3.使用示例
项目结构:
1 |
|
maven依赖:
1 |
|
在resources文件夹下创建db/migration目录,在此目录中创建sql脚本,格式为:版本号+分隔符+描述,如V1.0__v1__Init_Table.sql。示例sql如下:
1 |
|
application.yml文件:
1 |
|
然后启动项目,控制台正常输出后后查看数据。
在数据库中查看相关的数据变更,可以看到flyway_schema_history表插入了sql的执行记录。
查看插入的数据表如下所示。