image

看看自己的项目的那些SQL文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢?向大家推荐一款非常轻量级的敏捷数据库迁移框架——Flyway。想知道她有什么魅力吗?

Flyway为大家提供了如下的实现方式:

Java API

命令行

Maven

Gradle

Ant

SBT

为了减少描述难度在这里使用了Java API,项目构建方式为Maven,数据库为MySQL

需要环境

创建项目

首先我们要在命令行中使用Maven原型插件执行如下命令

mvn archetype:generate -B \

-DarchetypeGroupId=org.apache.maven.archetypes \

-DarchetypeArtifactId=maven-archetype-quickstart \

-DarchetypeVersion=1.1 \

-DgroupId=foo \

-DartifactId=bar \

-Dversion=1.0-SNAPSHOT \

-Dpackage=foobar

我们已经准备好开始了。当前项目的结构如下

.

|-- pom.xml

`-- src

|-- main

| `-- java

| `-- foobar

| `-- App.java

`-- test

`-- java

`-- foobar

`-- AppTest.java

进入创建的项目

cd bar

增加Flyway依赖

编辑当前目录下的pom.xml,增加Flyway和MySQL的依赖

...

com.googlecode.flyway

flyway-core

2.3

mysql

mysql-connector-java

5.1.6

...

...

整合Flyway

现在我们可以将Flyway的代码放入项目中,并配置数据库,例如增加到默认生成的:src/main/java/foobar/App.java

package foobar;

import com.googlecode.flyway.core.Flyway;

public class App {

public static void main(String[] args) {

// 创建Flyway实例

Flyway flyway = new Flyway();

// 设置数据库

flyway.setDataSource("jdbc:mysql://localhost:3306/foobar", "user", "pass");

// 开始迁移

flyway.migrate();

}

}

让我们创建第一个数据迁移吧

创建数据迁移目录src/main/resources/db/migration,执行命令

mkdir -p src/main/resources/db/migration

创建我们的第一个数据迁移src/main/resources/db/migration/V1__Create_person_table.sql

CREATE TABLE person (

id INT,

name VARCHAR(100)

);

执行程序

执行App.java(也可以直接在IDE中执行main方法)

mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true

如果你成功了,应该会得到如下信息

INFO: Creating Metadata table: `foobar`.`schema_version`

Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate migrate

INFO: Current version of schema `foobar`: << Empty Schema >>

Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate applyMigration

INFO: Migrating schema `foobar` to version 1

Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate logSummary

INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.194s).

持续增加数据迁移吧

假如我们现在需要增加第二个数据迁移,命名为:src/main/resources/db/migration/V2__Add_people.sql

INSERT INTO person (id, name) VALUES (1, 'Axel');

INSERT INTO person (id, name) VALUES (2, 'Mr. Foo');

INSERT INTO person (id, name) VALUES (3, 'Ms. Bar');

执行命令

mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true

输出如下

Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate migrate

INFO: Current version of schema `foobar`: 1

Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate applyMigration

INFO: Migrating schema `foobar` to version 2

Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate logSummary

INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.047s).

总结

通过Flyway让我们能很方便的管理数据库文件,并进行版本控制。文档地址

java迁移框架_Java敏捷数据库迁移框架——Flyway相关推荐

  1. node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一

    开课吧Web前端教程 前言 在日常的后端项目开发中,我们经常需要和数据库打交道.在这个过程中,我们需要创建数据库.表还有一些测试数据.许多时候,因为业务需求的变更导致的数据库结构的变化,需要修改数据库 ...

  2. laravel 框架中使用数据库迁移添加注释

    laravel 框架中数据库迁移添加注释 在使用laravel框架过程中,估计很多人都有用过数据库迁移文件.可能大家都会在建表时为字段添加注释.我在此要说明的是为表添加注释 首先我们需要引入larav ...

  3. EF mysql 数据迁移_EF-CodeFirst实现过程+数据库迁移

    系列文章: EF-ModelFirst实现过程+数据库迁移     http://www.jianshu.com/p/2a53f318144d EF-DBFirst实现过程    http://www ...

  4. django框架访问mysql数据库_Django框架怎么配置mysql数据库

    Django框架怎么配置mysql数据库 发布时间:2020-08-01 10:37:54 来源:亿速云 阅读:67 作者:小猪 这篇文章主要讲解了Django框架怎么配置mysql数据库,内容清晰明 ...

  5. oracle数据库迁移 增大空间,Oracle数据库迁移、创建表空间、创建数据表实例讲解-Oracle...

    数据库迁移 对于数据库迁移来说,如果源数据库与目标数据库版本一致,推荐使用Oracle导入或者pl/sql导入:如果版本不一致,则可以使用sql导入的方式. 创建表空间 create tablespa ...

  6. 使用Microsoft数据迁移助手将Oracle数据库迁移到SQL Server –安装过程和简短概述

    目标听众 (Intended audience) This document is intended for application developers and database administr ...

  7. 服务器系统迁移服务收费,服务器数据库迁移也收费

    服务器数据库迁移也收费 内容精选 换一换 此场景下数据库的迁移有如下方法:数据库迁移同样可以使用主机迁移服务SMS,但是只能离线迁移.详情请参见方法一:使用SMS部分.如果对停机时间有较高要求,您也可 ...

  8. java目前主流框架_java的三大主流框架介绍

    <java的三大主流框架介绍>由会员分享,可在线阅读,更多相关<java的三大主流框架介绍(2页珍藏版)>请在装配图网上搜索. 1.java的三大主流框架介绍java的三大主流 ...

  9. java检查注入sql框架_Java:检查器框架

    java检查注入sql框架 我在JavaOne 2012上 了解的有趣的工具之一是Checker Framework . Checker Framework的网页之一 指出 ,Checker Fram ...

  10. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

最新文章

  1. 如何在Mac中卸载openjdk15
  2. Redis:常见的面试题
  3. 从Java新手到大神需要学哪些知识?
  4. jdk环境变量配置_jmeter及jdk的环境变量配置
  5. [转]Oh My Zsh,安装,主题配置
  6. Logstash 基础入门
  7. 卷积神经网络-感受野的定义
  8. poj1700快速渡河问题(贪心策略,详细解析)
  9. go还是python 知乎_知乎用Go替代Python
  10. 收藏|2021年浅谈多任务学习
  11. hadoop ubantu环境搭建_创帆云大数据教程系列1-搭建基于docker的hadoop环境安装规划、容器通信及zookeeper...
  12. NPDP产品经理认证:精益画布使用六步法
  13. F2FS文件系统论文解读
  14. CImageList
  15. Spring Boot配置MongoDB多数据源
  16. defaul文件封装 export_vue-cli3.0打包组件后不能使用export default was not found in umd.js...
  17. 数据分析与预测(二)——pandas 函数read_csv解析
  18. 10Bootstrap5徽章
  19. java-net-php-python-Java沈师周边美食资源管理系统计算机毕业设计程序
  20. 如何将图片清晰度变高?电脑怎么调照片清晰度?

热门文章

  1. Prisma(一)——基础
  2. 在vue里引入使用Ag-grid表格插件
  3. 通过表的.frm和.idb文件备份MySQL表
  4. excel公式编辑器_七款编辑器/笔记工具推荐
  5. 怎样判断一个exe可执行程序是32位的还是64位的
  6. Jenkins之分布式部署及构建(master-slaver)
  7. android 电话管理
  8. Gartner曾劭清:云计算技术成就企业数字化转型之路
  9. 贪吃蛇小游戏制作(3)
  10. 查看已有的docker镜像latest的具体版本号