mysql - 有没有办法在 Win7 上用带有换行符的 json 文件中的数据填充 MySQL 5.7 表?

标签 mysql json load-data-infile mysql-5.7

我有以下示例 json 文件,我正在尝试用它填充 MySQL 表。由于 MySQL 5.7 支持 json 作为 native 数据类型,我认为这应该不是问题,但 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 支持的优势。

最佳答案

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

关于mysql - 有没有办法在 Win7 上用带有换行符的 json 文件中的数据填充 MySQL 5.7 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36697319/

相关文章:

mysql - 使用sql中的SELECT和GROUP_CONCAT函数更新表行

PHP 意外的输入结束错误

mysql - 具有多个键值对的 SQL 连接子节点

sql-server - 如何在 SQL Server 中删除表中的随机换行符到 XML 文件

json - 未捕获的语法错误意外 token U JSON

mysql - 如何为 InnoDB 引擎数据库重新播种 "Auto increment"列?

mysql - 从一个表中获取记录,其中 id 在 mysql json 中的第二个表数组中

php - json格式导出数据时如何设置标题?

mysql - LOAD DATA LOCAL INFILE 插入空白记录

sql - 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式