文档中心MogDBMogDB StackUqbar

文档:v2.0

支持的版本:

MTK Parameter

Parameter

autoAddMySQLAutoIncr

类型: bool

描述: 迁移到MySQL自动添加MySQL AUTO_INCREMENT

v2.8.0之前参数为true,当原表不存在自增列,自动增加AUTO_INCREMENT列,并把新增列设置为主键,原来主键改为唯一键.

v2.8.0之后参数为true,当原表不存在自增列,自动增加AUTO_INCREMENT列,并把新增列设置为UNIQUE键,原来主键保持不变.

v2.9.6之后参数为true

  • 当原表不存在自增列
    • 原表存在PK_ID列,不在处理
    • 自动增加AUTO_INCREMENT列,并把新增列设置为主键,原来主键变为唯一键.
  • 当原表存在自增列
    • 源主键第一列为自增列保持不变
    • 源唯一键第一列为自增列变为主键,主键变为唯一键
    • 源表存在自增列单列索引变为主键,主键变为唯一键
    • 以上都不存在添加主键,源主键变为唯一键,其他保持不变
PK_ID BIGINT UNSIGNED UNIQUE KEY AUTO_INCREMENT NOT NULL [INVISIBLE]
  • MySQl 8.0.23 之前为 visible
  • MySQl 8.0.23 为 invisible column
  • 原表存在PK_ID列,不在处理

MySQL supports invisible columns as of MySQL 8.0.23.
An invisible column is normally hidden to queries, but can be accessed if explicitly referenced.
Prior to MySQL 8.0.23, all columns are visible.

在某下场景下需要配合ignoreTabPartition参数使用. 如分区表分区键不包含主键

  • DB2迁移到MySQL

    • DB2

      CREATE TABLE MTK1.TAB_PK_TEST (
          COL1 VARCHAR(10) NOT NULL,
          ID BIGINT NOT NULL,
          COL2 VARCHAR(10),
          COL3 VARCHAR(10)
      ) IN USERSPACE1 ORGANIZE BY ROW
    • MySQL

      CREATE TABLE db2_mtk.tab_pk_test (
          -- 自动增加自增列并设置主键约束
          pk_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL INVISIBLE,
          col1 VARCHAR(10) NOT NULL,
          id BIGINT NOT NULL,
          col2 VARCHAR(10),
          col3 VARCHAR(10),
          UNIQUE KEY ( col1 )
      )

默认值: false

新增于: v2.1.1

autoAddMySQLAutoIncrTabList

类型: []string

描述: 配合autoAddMySQLAutoIncr参数使用.

配置哪些表自动增加auto_incr列. 默认为空代表为全部表.

参数不区分大小写

  • "TABLE_1" 迁移对象中所有表名为TABLE_1的表
  • "Schema1.TABLE_1" 迁移对象中Schema1下的TABLE_1的表

默认值: null

示例:

autoAddMySQLAutoIncrTabList Example

{
  "autoAddMySQLAutoIncrTabList": [
    "TABLE_1",
    "SCHEMA1.TABLE_1"
  ]
}

新增于: v2.2.1

ignoreNotSupportDefault

类型: bool

描述: 支持忽略部分不支持列默认值.如Oracle的sys_guid。MTK会内嵌白名单进行忽略。

默认值: false

replaceZeroDate

类型: string

描述: openGauss/MogDB/PostgreSQL 时间格式不支持 0000-00-00. 配置此参数会进行对应替换. 替换的范围如下:

  • 列默认值
  • 存储过程/函数中的SQL语句

When find a "zero" date: 0000-00-00 00:00:00 it is replaced by a NULL.

This could be a problem if your column is defined with NOT NULL constraint. If you can not remove the constraint,

use this directive to set an arbitral date that will be used instead.

You can also use -INFINITY if you don't want to use a fake date.

示例:

Replace Zero Date Example

{
  "replaceZeroDate": "1970-01-01 00:00:00"
}

virtualColToNormalCol

类型: bool

描述: 是否把源库虚拟列转成目标库的正常列.

默认值: false

可选值:

  • true
  • false

virtualColConv

类型: map[string]string

描述: 虚拟列表达转换功能.

示例:

virtualColConv example

{
  "virtualColConv": {
    "LEFT(HOST,POSSTR(HOST,':')-1)": "SPLIT_PART(HOST,':',1)",
    "TRUNC_TIMESTAMP(SNAPTIME,'HH')+ (MINUTE(SNAPTIME)/10*10 +10) MINUTES": "date_trunc('hour',snaptime) + (date_part('minute',snaptime) / 10 +1)::int * interval '10 min'"
  }
}

mySQLToOgCharExpression

类型: string

描述: MySQL 迁移到 openGauss 针对 char/varchar列进行计算列长表达式. 默认不计算 如 * 3 表示原来到长度*3

Deprecated: mtk scales up the length based on the db type,column type, db compatibility mode

convertOracleIntegerToNumeric

类型: bool

描述: 转换Oracle的Integer类型为NUMERIC. 支持openGauss/MogDB/PostgreSQL

默认值: false

可选值:

  • true
  • false

enableOgBlobClob

类型: bool

描述: 迁移其他数据库的Blob、Clob为openGauss的Blob、Clob.

默认值: false

可选值:

  • true
  • false

skipColumnType

类型: map[string]int

描述: 迁移时跳过某个数据类型列

格式为: "列类型": option

  • 1 不创建列并不迁移数据
  • 2 创建列但不迁移数据

可选值:

  • 0
  • 1
  • 2

示例:

Skip ColumnType Example

{
  "skipColumnType": {
    "COL_TYPE_1": 1,
    "COL_TYPE_2": 2
  }
}

skipColumnName

类型: map[string]int

描述: 迁移时跳过某个列

优先级高于 skipColumnType

格式为 "schema.table_name.column": option

  • 1 不创建列并不迁移数据
  • 2 创建列但不迁移数据

可选值:

  • 0
  • 1
  • 2

示例:

Skip ColumnName Example

{
  "skipColumnName": {
    "SCHEMA1.TAB_01.COL1": 1,
    "SCHEMA1.TAB_01.COL2": 2
  }
}

charLengthChangeExclude

类型: []string

描述: 跨字符集迁移时,针对CHAR类型指定表达式,对列名进行匹配并不进行长度扩充. 注意忽略大小写问题.

  • ^update_time* 忽略列名开头为 update_time 的列
  • ^update_time 忽略列名为 update_time 的列
  • (?i)^update_time$ 忽略列名大小写的情况下 update_time 的列.

示例:

Char Length Change Exclude Example

{
  "charLengthChangeExclude": [
    "^update_time*",
    "^visit_date$",
    "(?i)^visit_date$"
  ]
}

新增于: v2.5.2

enableCharTrimRightSpace

类型: bool

描述: 针对char迁移为varchar允许截取char类型右侧空格. 只支持目标端为openGauss/MogDB

默认值: false

可选值:

  • true
  • false

新增于: v2.7.1

customColMap

类型: map[string]SQLType

描述: 自定义列类型映射,只支持openGauss和MogDB

示例:

Custom Column Type Map

{
  "customColMap": {
    "col_type_char": {
      "defaultLength2": 0,
      "defaultLength": 0,
      "name": "col_type_varchar"
    }
  }
}

新增于: v2.9.3

Copyright © 2011-2024 www.enmotech.com All rights reserved.