通过CDM将MySQL数据导入GaussDB(DWS)时出现字段超长,数据同步失败
问题现象
MySQL 5.x版本字段长度varchar(n),用CDM同步数据到GaussDB(DWS),同样设置长度为varchar(n) ,但是会出现字段超长,数据同步失败的问题。
原因分析
- MySQL5.0.3之前varchar(n)这里的n表示字节数。
- MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个。
- GaussDB(DWS)的varchar(n)这里的n表示字节数。
根据字符集,字符类型如果为gbk,每个字符占用2个字节;字符类型如果为utf8,每个字符最多占用3个字节。根据转换规则,同样的字段长度,会导致GaussDB(DWS)出现字段超长的问题。
处理方法
假设MySQL字段为varchar(n),则将GaussDB(DWS)对应的字段长度设置为varchar(n*3)即可。