mysql脚本转换
1、插件:com.primeton.eos.maven.plugin:eos-ptp-maven-plugin:8.3.1:mysql-script-convert。使用前请强制更新插件!
参数:
-
dir: mysql脚本目录位置(必填)
-
includes:包含的文件匹配,可以没有
-
excludes:排除的文件匹配,可以没有
-
toDbType:转化的数据库类型(必填)支持多个逗号分割,比如:dm,oracle,db2,sqlserver,gaussdb,pg,kingbasees,highgo,oscar,uxdb,gbase
-
toDir:转换后的sql脚本位置,如果不配置,则为同级父目录/toDbType
-
sqlConvertMappings:自定义任意sql转换映射(用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512)
-
columnTypeConvertMappings:自定义列类型转换映射(用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512)
-
注释中自定义转换(=>toDbType:):如果有些sql比较特殊,需要自己转换。示例:
1、任意单条语句转换 /**=>Oracle:update a set b='1';**/ sql; 2、oracle支持pl/sql语法替换 /**=>oracle: DECLARE contentvalue AFC_PORTAL_TEMPLATE.CONTENT%TYPE; BEGIN contentvalue := '' INSERT INTO .....; END; **/ sql; 3、建表语句支持在create table前增加定义sql /**=>oralce:CREATE SEQUENCE XXL_JOB_LOG_SEQ_ID START WITH 2 INCREMENT BY 1 NOMAXVALUE;**/ create table ... 4、支持增加多条语句需要使用$$...$$标记替换sql /**=>pg:$$ CREATE SEQUENCE xxl_job_group_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; SELECT setval ( 'xxl_job_group_id_seq', 2, TRUE ); CREATE SEQUENCE xxl_job_info_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE SEQUENCE xxl_job_log_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE SEQUENCE xxl_job_logglue_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE SEQUENCE xxl_job_log_report_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE SEQUENCE xxl_job_registry_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE SEQUENCE xxl_job_user_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; SELECT setval ( 'xxl_job_user_id_seq', 2, TRUE ); SELECT setval ( 'xxl_job_info_id_seq', 2, TRUE );$$ **/ create table .... 5、支持建表语句属性定义替换 替换语句结尾不需要添加逗号 CREATE TABLE XXL_JOB_INFO ( /**=>oracle:ID NUMBER(10,0) DEFAULT XXL_JOB_INFO_SEQ_ID.NEXTVAL =>gaussdb:ID INT NOT NULL DEFAULT nextval ( 'xxl_job_log_id_seq' :: regclass ) =>highgo:ID SERIAL NOT NULL =>kingbasees:ID SERIAL NOT NULL =>pg:ID INT NOT NULL DEFAULT nextval ( 'xxl_job_info_id_seq' :: regclass ) =>sqlserver:id int NOT NULL identity(1,1) **/ ID int(11) NOT NULL AUTO_INCREMENT,.... 6、支持建表语句结尾增加内容,但是必须写在建表语句的);之前和最后一条属性之后,一般是主键定义等语句 PRIMARY KEY (ID) /**=>kingbasees: CREATE SEQUENCE "XXL_JOB_INFO_ID_SEQ" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER SEQUENCE "XXL_JOB_INFO_ID_SEQ" OWNED BY "XXL_JOB_INFO"."ID"; **/ ) ;
示例:
mvn com.primeton.eos.maven.plugin:eos-ptp-maven-plugin:8.3.1:mysql-script-convert "-Ddir=D:\work\git\devops\devops-specs\com.primeton.devops.specs.model\src\META-INF\scripts\devops\upgrade\Mysql" "-DtoDbType=dm" "-DtoDir=d:/download/dm"
mvn -s F:\PY\oacenter\settings.xml help:describe "-DgroupId=com.primeton.eos.maven.plugin" "-DartifactId=eos-ptp-maven-plugin" "-Dversion=8.3.1"
源码转换脚本使用说明
-
进入到脚本目录下,执行脚本
.\convert.cmd "F:\PY\oacenter\settings.xml"
使用建议:
-
索引或者字段自增序列等非通用语法需要使用注释替换进行替换
-
字段定义务必写在同一行