danfengcao / binlog2sql

Parse MySQL binlog to SQL you want

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

当列为json时, 中文乱码, 并且json格式有问题

18513132549 opened this issue · comments

原json: {"name": "张三", "sub_info": {"wife": "王丽", "child": null}}
解析出来的是: {'sub_info': {'wife': "'\xe7\x8e\x8b\xe4\xb8\xbd'", 'child': 'NULL'}, 'name': "'\xe5\xbc\xa0\xe4\xb8\x89'"}

  1. json 最外层{}没有用单引号包裹, 执行insert报错
  2. json中的 双引号变成了单引号
  3. json中 null 变成了 'NULL'
  4. json中的中文乱码

json中的空数组: [], 解析出来成了 (NULL)

我修改了一版,支持json解析,你可以试试:https://github.com/Michaelsky0913/binlog2sql

我修改了一版,支持json解析,你可以试试:https://github.com/Michaelsky0913/binlog2sql

你这个问题也有很多啊
1、json解析出来key,value还是bytes类型
2、双引号变双引号,这样sql回放是会出错的
3、json中的NULL变None
总体来说无法使用,
我有考虑过通过import json来处理,但是带来的问题的json的元素的顺序会发生变化,对数据校验会有比较大的问题

我修改了一版,支持json解析,你可以试试:https://github.com/Michaelsky0913/binlog2sql

你这个问题也有很多啊 1、json解析出来key,value还是bytes类型 2、双引号变双引号,这样sql回放是会出错的 3、json中的NULL变None 总体来说无法使用, 我有考虑过通过import json来处理,但是带来的问题的json的元素的顺序会发生变化,对数据校验会有比较大的问题

  1. 最新版的,如果原数据的 key,value 是 bytes 类型的,会改成十六进制值,这样可以保证原数据不变;
  2. 没看明白?是单引号变双引号,还是双引号变单引号?
  3. 这个确实是个bug,我有空修复一下

我修改了一版,支持json解析,你可以试试:https://github.com/Michaelsky0913/binlog2sql

你这个问题也有很多啊 1、json解析出来key,value还是bytes类型 2、双引号变双引号,这样sql回放是会出错的 3、json中的NULL变None 总体来说无法使用, 我有考虑过通过import json来处理,但是带来的问题的json的元素的顺序会发生变化,对数据校验会有比较大的问题

  1. 最新版的,如果原数据的 key,value 是 bytes 类型的,会改成十六进制值,这样可以保证原数据不变;
  2. 没看明白?是单引号变双引号,还是双引号变单引号?
  3. 这个确实是个bug,我有空修复一下

sorry,打错字了,2中是说json采用的是双引号,但是解析出来变为了单引号,这样在sql执行是json类型是不识别的

你现在再重新拉一下吧,刚修复了一点bug。
地址更新一下:https://github.com/michael-liumh/binlog2sql.git