我正在尝试从 json 中提取数据并将其插入表中。与 json 一样,新行按编号出现在表中,但所有字段都有一个空值 NULL。请帮我弄清楚。
[{"name":"ivan","city":"london","kurs":"1"},{"name":"lena","city":"tokio","kurs":"5"},{"name":"misha","city":"kazan","kurs":"3"}]
SET @json = CONVERT(LOAD_FILE('/var/lib/mysql-files/myfile.json') using utf8mb4);
REPLACE INTO test (name, city, kurs)
SELECT
JSON_VALUE(@json, '$.name') as name,
JSON_VALUE(@json, '$.city') as city,
JSON_VALUE(@json, '$.kurs') as kurs
FROM JSON_TABLE(@json,'$[*]' COLUMNS (data JSON PATH '$')) jsontable
使用它,(并更改VARCAR(20)
为适当的定义):
set @json = '[{"name":"ivan","city":"london","kurs":"1"},{"name":"lena","city":"tokio","kurs":"5"},{"name":"misha","city":"kazan","kurs":"3"}]';
select * from json_table(@json,'$[*]' columns(name varchar(20) path '$.name',
city varchar(20) path '$.city',
kurs varchar(20) path '$.kurs')) as jsontable;
见:DBFIDDLE
输出:
姓名 | 城市 | 课程 |
---|---|---|
伊万 | 伦敦 | 1 |
莉娜 | 东京 | 5 |
米莎 | 喀山 | 3 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句