dm支持json类型

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:tidb 4.0.8 dm 2.0
  • 【问题描述】:使用dm 2.0实时同步mysql数据到tidb中,发现mysql中同一条数据得json类型得数据内容和tidb中同一条数据json类型得数据内容不一样,这个是因为不支持json类型吗

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  • 可以先通过标准的 insert 语句分别在 Mysql 以及 TiDB 执行查看一下具体是否存在差异。
  • 如果可以的话麻烦上传一下表结构以及用于复现问题的数据(敏感数据可以先脱敏)。
1 个赞

看了具体内容,json 字段里面各选项内容值是正确得,但是各选项得顺序和mysql中不一样:
tidb中{“amount”: 461.2, “attributionCompCode”: “2814”, “attributionCompName”: “111”, “billNo”: “0101”, “costCenter”: “28140412”, “customerCode”: “106304”, “customerName”: “222”, “date”: 1605259978420, “signedCompCode”: “2408”, “signedCompName”: “333”}
mysql中:
{“date”: 1605259978420, “amount”: 461.2, “billNo”: “0101”, “costCenter”: “28140412”, “customerCode”: “106304”, “customerName”: 222", “signedCompCode”: “2408”, “signedCompName”: “333”, “attributionCompCode”: “2814”, “attributionCompName”: “111”}

1 个赞

修改为一致的试试,这里应该要保持一致的

1 个赞

怎么修改为一致得

1 个赞

下游表 和 json 文件格式,选一个修改下,不然你导入进去的值,和列也对不上吧

1 个赞

我就是用dm全量导进去,然后增量同步。结果是开头得提问。很多表都有json字段,我怎么从源头上避免这个问题

1 个赞

1.抱歉,我前面理解的不对,这个顺序不对,会对业务有影响吗?取值时候会有影响吗?
2. json 文件应该本身就是无序的吧

1 个赞

咨询了一下开发,json存储得时候是无序存储进去得,取值得时候没有影响,只是用 sync-diff-inspector 工具校验得时候,发现json类型得键值顺序不一样。

1 个赞

好的,多谢。 我理解应该不会有什么影响。。。具体 object 中字段的顺序取决于具体实现语言的序列化器,从 JSON 标准上说,字段是无序的:https://tools.ietf.org/html/rfc7159#section-1

1 个赞

多谢了

1 个赞

:handshake:

1 个赞