公司项目组长给的任务,对已开发完成的项目,将项目迁移落地到另一个区域中,能够正常跑起来。但因为有些项目的数据库信息没有保存完整,需要整合成一个初始的数据库,当部署每个版本的项目,能有相对应版本的数据库使项目运行起来。组长提到了Flyway工具,于是网上查找了关于Flyway的使用。
Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。
Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL (including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix。
V+版本号(版本号的数字间以".“或”_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V2017.9.30__Update.sql。
项目的源文件夹下的db/migration目录。
一共就6个基本指令:migrate、clean、info、validate、baseline、repair。
org.flywaydb
flyway-core
4.2.0
package com.hfuu.config;
import javax.sql.DataSource;
import org.flywaydb.core.Flyway;
public class MigrationSqlite {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void migrate() {
//初始化flyway类
Flyway flyway = new Flyway();
//设置加载数据库的相关配置信息
flyway.setDataSource(dataSource);
//设置存放flyway metadata数据的表名,默认"schema_version",可不写
// flyway.setTable("SCHMA_VERSION");
//设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径,默认"db/migration",可不写
// flyway.setLocations("dataBase/sqlite");
//设置sql脚本文件的编码,默认"UTF-8",可不写
flyway.setEncoding("UTF-8");
flyway.migrate();
}
}