从mysql表替换字符以导出到JSON文件

时间:2019-05-07 12:32:40

标签: mysql

我有一个非常长的表(超过4M条记录,我使用MySql),并且它有很多带有此字符串的记录: \\“

我正在尝试将此表导出到mongodb,但是当我导入JSON文件时,mongodb会向我抛出此错误:

  
    

失败:错误处理文档#18:对象键:值对后的无效字符't'

  

这是我的查询: MySQL

SELECT json_object(
     "id", id,
     "execution_id", execution_id,
     "type", type,
     "info", info,
     "position", position,
     "created_at", json_object("$date", DATE_FORMAT(created_at,'%Y-%m-%dT%TZ')),
     "updated_at", json_object("$date", DATE_FORMAT(updated_at,'%Y-%m-%dT%TZ'))
      )as 'json'
      FROM myTable
      INTO OUTFILE 'myPath';

我知道问题是字符串,我的问题是:如何将该特定字符串更改为 \“ ?不能手动更改,因此我对查询的了解有限。请帮忙,谢谢您的阅读。

具有此字符的列是“ info”,这里是一个示例:

{
    "id": 30, 
    "execution_id": 2, 
    "type": "PHASE", 
    "info": "{  \\r\\n \\"title\\": \\"Phase\\",
                \\r\\n \\"order\\": \\"1\\",
                \\r\\n \\"description\\": \\"Example Phase 1\\",
                \\r\\n \\"step\\": \\"end\\",
                \\r\\n \\"status\\": \\"True\\"\\r\\n}",
    "position": 24, 
    "created_at": {"$date": "2018-01-11T15:01:46Z"}, 
    "updated_at": {"$date": "2018-01-11T15:01:46Z"}
}

1 个答案:

答案 0 :(得分:0)

您应该可以使用MySQL REPLACE() function来做到这一点。

反斜杠在MySQL REPLACE()函数中有点特殊情况,因此您将需要使用\\来表示每个文字\,从而替换{{1} }与\\一起使用,您需要运行以下命令:

\

您的完整查询如下所示:

REPLACE(info,'\\\\','\\')