簡體   English   中英

從mysql表替換字符以導出到JSON文件

[英]Replacing a character from mysql table to export to JSON file

我有一個非常長的表(超過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"}
}

您應該能夠使用MySQL REPLACE()函數執行此操作。

反斜杠在MySQL REPLACE()函數中有點特殊情況,因此您需要使用\\\\來表示每個文字\\ ,因此用\\替換\\\\需要運行如下所示:

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

您的完整查詢將如下所示:

SELECT json_object(
     "id", id,
     "execution_id", execution_id,
     "type", type,
     "info", REPLACE(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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM