5

我有以下示例 json 文件,我正在尝试用它填充 MySQL 表。由于 MySQL 5.7 支持 json 作为本机数据类型,我认为这应该不是问题,但 MySQL 的 json 验证器似乎对文件内的换行符有问题。一旦我摆脱了所有换行符并将我的示例文件写在一行中,它就可以完美运行。

[
{
    "somestuff": [
        {
            "field1": "val1",
            "field2": 17,
            "field3": 27,
            "field4": 42,
            "field5": 73
        },
        {
            "field1": "val2",
            "field2": 3,
            "field3": 12,
            "field4": 13,
            "field5": 100
        }
    ],
    "field0": "image",
    "path": "some path"
}
]

我知道 json 本身就存在包含反斜杠的字符串的问题,但是即使在编写任何类型的单词而不是路径时,MySQL json 验证器仍然无法完全读取 json 文件,并且只会在第一个换行符之前停止。我仍然收到以下错误:

Error Code: 3140. Invalid JSON text: "Invalid value." at position 1 in value (or column) '['. 

使用以下查询时:

-- create test table for json data
CREATE TABLE IF NOT EXISTS jsons_test(
       annotation_id INT AUTO_INCREMENT NOT NULL UNIQUE, 
        json_data json);
LOAD DATA LOCAL INFILE 'C:\\some\\path\\test.json'
INTO table json_test(json_data);

我想这很可能是由于换行编码而发生的,但我仍然不知道是否有任何解决方法可以解决它。

更新:我自己找到了一个解决方案...通过添加LINES TERMINATED BY '\\n',我可以成功地用 json 数据填充表,并利用 MySQL 新的 json 支持的优势。

4

1 回答 1

3

我找到了解决问题的方法:请参阅UPDATE

于 2016-04-19T08:56:27.873 回答