sql-migrate
sql-migrate
可以快速从交付件sql文件夹中找出需要的sql集合,以便于无法使用flyway的的场景下快速初始化或升级数据库。
sql-migrate
支持:
- 获取当前最新版本的所有全量SQL;
- 获取指定版本的全量SQL;
- 获取从版本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