基于mysql脚本转换其他数据库脚本工具使用说明

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"

源码转换脚本使用说明

  1. 进入到脚本目录下,执行脚本

    .\convert.cmd "F:\PY\oacenter\settings.xml"  
    

使用建议:

  1. 索引或者字段自增序列等非通用语法需要使用注释替换进行替换

  2. 字段定义务必写在同一行

更多请参见EOS Low-Code Platform 8 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值