Skip to content

sql-migrate

sql-migrate可以快速从交付件sql文件夹中找出需要的sql集合,以便于无法使用flyway的的场景下快速初始化或升级数据库。

sql-migrate支持:

  1. 获取当前最新版本的所有全量SQL;
  2. 获取指定版本的全量SQL;
  3. 获取从版本a升级到版本b的所有增量SQL。

使用

sql-migrate.jar使用linux command line风格的传参方式,同时支持长option和短option,例如-t 1.8.0选项和--target=1.8.0等价,也支持指定配置文件。

shell
usage: migrate [-a] [-c <arg>] [-d <arg>] [-f <arg>] [-h] [-l <arg>] [-m <arg>] [-o <arg>] [-t <arg>] [-u]
       [-v]
 -a,--all              sql迁移模式, 全量脚本, 默认全量
 -c,--config <arg>     配置文件位置, 支持properties配置
 -d,--database <arg>   数据库类型, mssql/mysql/oracle, 默认 mysql
 -f,--from <arg>       起始版本(不包含), 默认最早版本
 -h,--help             帮助信息
 -l,--location <arg>   交付件数据库脚本目录, 默认当前文件夹
 -m,--modules <arg>    指定模块, 多个模块用英文逗号隔开, 支持正则表达式, 默认全部
 -M,--merge <arg>      合并所有脚本生成一个指定文件名的文件
 -o,--output <arg>     迁移sql输出目录, 默认当前文件夹
 -t,--target <arg>     目标版本, 默认最新版本
 -u,--update           sql迁移模式, 增量脚本
 -v,--verbose          打印详细过程
usage: migrate [-a] [-c <arg>] [-d <arg>] [-f <arg>] [-h] [-l <arg>] [-m <arg>] [-o <arg>] [-t <arg>] [-u]
       [-v]
 -a,--all              sql迁移模式, 全量脚本, 默认全量
 -c,--config <arg>     配置文件位置, 支持properties配置
 -d,--database <arg>   数据库类型, mssql/mysql/oracle, 默认 mysql
 -f,--from <arg>       起始版本(不包含), 默认最早版本
 -h,--help             帮助信息
 -l,--location <arg>   交付件数据库脚本目录, 默认当前文件夹
 -m,--modules <arg>    指定模块, 多个模块用英文逗号隔开, 支持正则表达式, 默认全部
 -M,--merge <arg>      合并所有脚本生成一个指定文件名的文件
 -o,--output <arg>     迁移sql输出目录, 默认当前文件夹
 -t,--target <arg>     目标版本, 默认最新版本
 -u,--update           sql迁移模式, 增量脚本
 -v,--verbose          打印详细过程

参数解释:

  • -a/--all: 指定本次获取全量SQL,将从all目录查找SQL文件;但如果指定了目标版本(-t),将获取从最小版本到指定目标版本的增量SQL,因为koca交付件SQL不支持指定版本的全量SQL,默认全量;
  • -c <config_file_path>/--config=<config_file_path>: 通过配置文件指定参数,如果配置文件和命令行都指定了相同的参数,优先使用命令行参数; 在不指定任何命令行参数时,会默认查找当前jar包同级目录下的config.properties,若文件不存在将不会执行任何操作;
  • -d <database_type>/--database=<database_tyoe>: 指定数据库类型,默认mysql;
  • -f <from_version>/--from=<from_version>: 指定起始版本,在获取增量脚本时表示当前版本(不包括),输出的sql版本大于当前版本;
  • -h/--help: 打印帮助信息,在仅指定-h选项或用法错误时才会打印帮助信息,若还指定了其他选项,-h选项将被忽略;
  • -l <source_location>/--location=<source_location>: 指定交付件sql位置,注意需指定到04.database目录,如--location=/opt/KOCA_RELEASE_V2.3.0/04.database/, 默认jar包同级目录;
  • -m <modules>/--modules=<modules>: 指定需要哪些模块的SQL,支持正则表达式,多个模块用英文逗号隔开,如-m koca-amo.*,admim_basic,admin_user,默认全部;
  • -M <dest_file>/--merge=<dest_file>: 将全部脚本输出到目标文件;
  • -o <output_path>/--output=<outpur_path>: 指定SQL输出路径,默认当前路径,会在目标路径创建时间戳文件夹,不会覆盖或删除任何文件;
  • -t <target_version>/--target=<target_version>: 指定升级的目标版本;
  • -u/--update: 指定本次获取增量SQL,将从update目录查找SQL;
  • -v/--verbose: 是否显示详细信息,详细信息将展示指定的参数、生效的参数、sql拷贝过程。

配置文件实例

properties
update=true
database=mssql
modules=koca-amo-.*,admin_basic,admin_user
from=2.0.0
target=2.3.0
location=/opt/KOCA_RELEASE_V2.3.0/04.database/
output=/opt/KOCA_RELEASE_V2.3.0/target
verbose=true
update=true
database=mssql
modules=koca-amo-.*,admin_basic,admin_user
from=2.0.0
target=2.3.0
location=/opt/KOCA_RELEASE_V2.3.0/04.database/
output=/opt/KOCA_RELEASE_V2.3.0/target
verbose=true

示例

帮助信息:

shell
java -jar sql-migrate.jar -h
usage: migrate [-a] [-c <arg>] [-d <arg>] [-f <arg>] [-h] [-l <arg>] [-m <arg>] [-o <arg>] [-t <arg>] [-u]
       [-v]
 -a,--all              sql迁移模式, 全量脚本, 默认全量
 -c,--config <arg>     配置文件位置, 支持properties配置
 -d,--database <arg>   数据库类型, mssql/mysql/oracle, 默认 mysql
 -f,--from <arg>       起始版本(不包含), 默认最早版本
 -h,--help             帮助信息
 -l,--location <arg>   交付件数据库脚本目录, 默认当前文件夹
 -m,--modules <arg>    指定模块, 多个模块用英文逗号隔开, 支持正则表达式, 默认全部
 -M,--merge <arg>      合并所有脚本生成一个指定文件名的文件
 -o,--output <arg>     迁移sql输出目录, 默认当前文件夹
 -t,--target <arg>     目标版本, 默认最新版本
 -u,--update           sql迁移模式, 增量脚本
 -v,--verbose          打印详细过程
---------------------------
example:
最新版本amo所有模块和admin-basic模块全量脚本:
  java -jar sql-migrate.jar -a -d oracle -m koca-amo-.*,admin-basic -l /opt/2.5.0/04.database -o /opt/2.5_all
最新版本增量脚本:
  java -jar sql-migrate.jar -u --database=mysql --location=/opt/2.5.0/04.database -o /opt/2.5_update
当前版本为2.0.0, admin所有模块升级到2.5.0的增量脚本:
  java -jar sql-migrate.jar -u -d mssql -m admin-* -f 2.0.0 -t 2.5.0 -l /opt/2.5.0/04.database -o /opt/2.5_all
使用配置文件:
  java -jar sql-migrate.jar -c /opt/config.properties
java -jar sql-migrate.jar -h
usage: migrate [-a] [-c <arg>] [-d <arg>] [-f <arg>] [-h] [-l <arg>] [-m <arg>] [-o <arg>] [-t <arg>] [-u]
       [-v]
 -a,--all              sql迁移模式, 全量脚本, 默认全量
 -c,--config <arg>     配置文件位置, 支持properties配置
 -d,--database <arg>   数据库类型, mssql/mysql/oracle, 默认 mysql
 -f,--from <arg>       起始版本(不包含), 默认最早版本
 -h,--help             帮助信息
 -l,--location <arg>   交付件数据库脚本目录, 默认当前文件夹
 -m,--modules <arg>    指定模块, 多个模块用英文逗号隔开, 支持正则表达式, 默认全部
 -M,--merge <arg>      合并所有脚本生成一个指定文件名的文件
 -o,--output <arg>     迁移sql输出目录, 默认当前文件夹
 -t,--target <arg>     目标版本, 默认最新版本
 -u,--update           sql迁移模式, 增量脚本
 -v,--verbose          打印详细过程
---------------------------
example:
最新版本amo所有模块和admin-basic模块全量脚本:
  java -jar sql-migrate.jar -a -d oracle -m koca-amo-.*,admin-basic -l /opt/2.5.0/04.database -o /opt/2.5_all
最新版本增量脚本:
  java -jar sql-migrate.jar -u --database=mysql --location=/opt/2.5.0/04.database -o /opt/2.5_update
当前版本为2.0.0, admin所有模块升级到2.5.0的增量脚本:
  java -jar sql-migrate.jar -u -d mssql -m admin-* -f 2.0.0 -t 2.5.0 -l /opt/2.5.0/04.database -o /opt/2.5_all
使用配置文件:
  java -jar sql-migrate.jar -c /opt/config.properties

最新版本amo所有模块和admin-basic模块全量脚本:

shell
java -jar sql-migrate.jar -a -d oracle -m koca-amo-.*,admin-basic -l /opt/2.5.0/04.database -o /opt/2.5_all -v
Options:
all
modules=koca-amo-.*,admin_basic
location=/opt/2.5.0/04.database 
verbose
--------------------------------------
迁移模式: all
数据库类型: mysql
模块: koca-amo-.*,admin_basic
交付件脚本路径: /opt/2.5.0/04.database 
脚本输出路径: /path/to/sql-migrate
当前版本: null
目标版本: null
--------------------------------------
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/table/all/ALL_0_3_010__koca_amo_basic_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/data/all/ALL_1_3_011__koca_amo_basic_srv_type.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/data/all/ALL_1_3_010__koca_amo_basic_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-topology/table/all/ALL_0_3_060__koca_amo_topology_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-topology/data/all/ALL_1_3_060__koca_amo_topology_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/table/all/ALL_0_3_050__koca_amo_alert_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/data/all/ALL_1_3_051__koca_amo_alert_chanel_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/data/all/ALL_1_3_050__koca_amo_alert_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/table/all/ALL_0_3_030__koca_amo_monitor_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/data/all/ALL_1_3_030__koca_amo_monitor_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/data/all/ALL_1_3_031__koca_amo_monitor_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-tracing/data/all/ALL_1_3_040__koca_amo_tracing_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/table/all/ALL_0_3_020__koca_amo_logging_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/data/all/ALL_1_3_021__koca_amo_logging_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/data/all/ALL_1_3_020__koca_amo_logging_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-operation/table/all/ALL_0_3_070__koca_amo_operation_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-operation/data/all/ALL_1_3_070__koca_amo_operation_menu.sql
脚本数量: 17, 脚本路径: /path/to/sql-migrate/1627982729649
java -jar sql-migrate.jar -a -d oracle -m koca-amo-.*,admin-basic -l /opt/2.5.0/04.database -o /opt/2.5_all -v
Options:
all
modules=koca-amo-.*,admin_basic
location=/opt/2.5.0/04.database 
verbose
--------------------------------------
迁移模式: all
数据库类型: mysql
模块: koca-amo-.*,admin_basic
交付件脚本路径: /opt/2.5.0/04.database 
脚本输出路径: /path/to/sql-migrate
当前版本: null
目标版本: null
--------------------------------------
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/table/all/ALL_0_3_010__koca_amo_basic_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/data/all/ALL_1_3_011__koca_amo_basic_srv_type.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-basic/data/all/ALL_1_3_010__koca_amo_basic_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-topology/table/all/ALL_0_3_060__koca_amo_topology_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-topology/data/all/ALL_1_3_060__koca_amo_topology_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/table/all/ALL_0_3_050__koca_amo_alert_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/data/all/ALL_1_3_051__koca_amo_alert_chanel_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-alert/data/all/ALL_1_3_050__koca_amo_alert_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/table/all/ALL_0_3_030__koca_amo_monitor_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/data/all/ALL_1_3_030__koca_amo_monitor_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-monitor/data/all/ALL_1_3_031__koca_amo_monitor_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-tracing/data/all/ALL_1_3_040__koca_amo_tracing_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/table/all/ALL_0_3_020__koca_amo_logging_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/data/all/ALL_1_3_021__koca_amo_logging_config.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-logging/data/all/ALL_1_3_020__koca_amo_logging_menu.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-operation/table/all/ALL_0_3_070__koca_amo_operation_table.sql
File copied: /opt/2.5.0/04.database/mysql/03.koca-amo/koca-amo-operation/data/all/ALL_1_3_070__koca_amo_operation_menu.sql
脚本数量: 17, 脚本路径: /path/to/sql-migrate/1627982729649

最新版本增量脚本:

shell
java -jar sql-migrate.jar -u --database=oracle --location=/opt/2.5.0/04.database -o /opt/2.5_update

脚本数量: 205, 脚本路径: /opt/2.5_update/1627982634631
java -jar sql-migrate.jar -u --database=oracle --location=/opt/2.5.0/04.database -o /opt/2.5_update

脚本数量: 205, 脚本路径: /opt/2.5_update/1627982634631

当前版本为2.0.0, admin所有模块升级到2.5.0的增量脚本:

shell
java -jar sql-migrate.jar -u -d mssql -m admin_.* -f 2.0.0 -t 2.5.0 -l /opt/2.5.0/04.database -o /opt/2.5_up

脚本数量: 64, 脚本路径: /opt/2.5_up/1627982994508
java -jar sql-migrate.jar -u -d mssql -m admin_.* -f 2.0.0 -t 2.5.0 -l /opt/2.5.0/04.database -o /opt/2.5_up

脚本数量: 64, 脚本路径: /opt/2.5_up/1627982994508

使用配置文件:

shell
java -jar sql-migrate.jar -c /opt/config.properties
java -jar sql-migrate.jar -c /opt/config.properties