# Mysql ddl数据文件转换
# 使用场景
将mysql的ddl数据文件转换成其他数据库类型可执行的文件
# 配置说明
属性 | 属性名称 | 配置说明 |
---|---|---|
toDbType | 转化的数据库类型 | 目标数据库类型,支持多选,多选时会在转换后的sql脚本目录下创建对应目标类型目录。 |
dir | mysql脚本目录位置 | mysql脚本位置,支持文件夹嵌套获取,不填默认workspace根目录 |
includes | 包括文件 | 多个逗号分割,支持正则匹配 |
excludes | 排除文件 | 多个逗号分割,支持正则匹配 |
toDir | 转换后的sql脚本位置 | 转换后脚本相对于workspace根目录位置,不能填写mysql脚本目录位置的子目录!多选时会在目标目录下多建立一层类型目录。 |
sqlConvertMappings | 自定义任意sql转换映射 | (用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512) |
columnTypeConvertMappings | 自定义列类型转换映射 | (用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512) |
charset | 文件编码 | mysql脚本编码,默认UTF-8 |
packagingType | 打包类型 | 打包类型,除了不打包,其他情况下会在工作空间根目录打包一个目标目录名称的压缩包 |
# 使用注意
1、自定义sql转换映射顺序为:原文本先通过 自定义任意sql转换映射,在通过 自定义列类型转换映射,最后通过插件内置映射规则。
2、目标目录不能填写mysql脚本目录位置的子目录。
3、目标数据库类型多选时,会在转换后的sql脚本目录下创建对应目标类型目录,而单选的时候不会。
# 其他说明
原子任务运行依赖com.primeton.eos.maven.plugin:eos-ptp-maven-plugin插件,如果需要更新插件,请更新该平台参数,并在对应jenkins的maven-data中放入对应的jar和pom文件
Engine.MysqlScriptConvertPlugin
# maven插件说明
可以单独下载mysql转换maven插件,通过mvn命令执行mysqll转换
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
toDir:转换后的sql脚本位置,如果不配置,则为同级父目录/toDbType
sqlConvertMappings:自定义任意sql转换映射(用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512)
columnTypeConvertMappings:自定义列类型转换映射(用|分割)规则,多个逗号分隔,自动忽略大小写,示例:varchar(4096)|varchar(512)
2、可以通过添加转换源文件注释,完成特殊sql的自定义转换,每个注释仅对紧跟的一条sql生效
注释中自定义转换(=>toDbType:)
单个示例:
/**
=>Oracle:
update a set b='1';
*/
多个示例:
/**
=>Oracle:
update a set b='1';
=>dm:
update b set c='1';
*/
3、命令示例:
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"