【发布时间】:2021-05-09 22:26:17
【问题描述】:
如何使用 SQL 将 JSON 文件中的数据导入表中?我在使用 SQL 时遇到问题,我无法读取“值”“键”,因为它们是保留字。
这里是 SQL 查询的一部分和 JSON 文件的一部分:
DECLARE @JSON_table VARCHAR(MAX)
SELECT @JSON_table = BulkColumn
FROM OPENROWSET (BULK 'C:\Users\dbjx1038\Desktop\sql\inventory.json', SINGLE_CLOB) import
SELECT ISJSON(@JSON_table)
SELECT @JSON_table AS 'JSON Text'
SELECT * FROM OPENJSON (@JSON_table)
SELECT *
FROM OPENJSON (@JSON_table, '$.header.columns')
WITH (title VARCHAR(50),
[property] VARCHAR(50),
minWidth int,
dataType VARCHAR(50),
hideable VARCHAR(10))
SELECT *
FROM OPENJSON (@JSON_table, '$.header.fields')
WITH (property VARCHAR(50),
dataType VARCHAR(50),
display VARCHAR(50))
SELECT *
FROM OPENJSON (@JSON_table, '$.data')
WITH (deviceType VARCHAR(50),
validity VARCHAR(50),
chasisNumber NVARCHAR(50),
serialNumber NVARCHAR(50))
{
"columns": [
{
"title": "Impacted Entities",
"property": "values_short_display",
"minWidth": 250,
"dataType": "jsonArray"
},
{
"title": "Impacted Entities Details",
"property": "values",
"hideable": true,
"visible": false,
"minWidth": 250,
"dataType": "jsonArray"
},
{
"title": "Severity",
"property": "severity",
"display": "iconAndText",
"iconProperty": "severity",
"hideable": false,
"icon": [
{
"key": "Minor",
"value": "images/event_minor.png"
},
{
"key": "Medium",
"value": "images/event_other.png"
}
],
"minWidth": 70,
"dataType": "string"
},
{
"title": "Alarm Name",
"property": "rule_name_display",
"hideable": false,
"minWidth": 160,
"dataType": "string"
},
{
"title": "Cleared Date & Time",
"property": "cleared_time",
"displayFormat": "DD MMM YYYY h:mm:ss A z",
"inputFormat": "unix-time",
"minWidth": 200,
"dataType": "date"
}
],
"fields": [
{
"property": "values_short_display",
"dataType": "jsonArray"
},
{
"property": "uuid",
"dataType": "string"
},
{
"property": "cleared_by",
"dataType": "string"
}
],
我想制作包含列中这些数据的表,以及如何读取项目“entry_time”,因为破折号会导致错误
【问题讨论】:
-
JSON 支持高度特定于供应商 - 所以请添加一个标签来指定您是否使用
mysql、postgresql、sql-server、oracle或db2- 或完全不同的东西。 -
使用 sql_server
标签: json sql-server create-table