有没有办法用 json 文件中的数据在 Win7 上使用换行符填充 MySQL 5.7 table?
Is there a way to populate a MySQL 5.7 table with data from a json file with line breaks on Win7?
我有以下示例 json 文件,我正在尝试用它填充 MySQL table。由于 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 数据成功填充 table,并利用 MySQL 新的 json 支持的优势。
我找到了解决问题的方法:请参阅 UPDATE
我有以下示例 json 文件,我正在尝试用它填充 MySQL table。由于 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 数据成功填充 table,并利用 MySQL 新的 json 支持的优势。
我找到了解决问题的方法:请参阅 UPDATE