Ich versuche, eine JSON-Datei in SQL unter Verwendung OPENJSON
zu analysieren. Ich habe eine Struktur, die wie folgt aussieht:Parsing JSON in Azure SQL mit OPENJSON
{
"definitions": {
"Event": {
"properties": {
"id": {
"type": "string",
"description": "System-generated Id"
},
"transactionDateTime": {
"type": "string",
"description": "RFC3339-compliant, system-generated timestamp"
},
"Name": {
"type": "string",
"description": "blah"
}
}
}
}
Ich versuche, das type
Feld für jedes Element in dem properties
Abschnitt mit einer Auswahlabfrage zu lesen.
drop table if exists #temp;
SELECT * into #temp FROM OPENROWSET (BULK 'C:\swagger.json', SINGLE_CLOB) as j
CROSS APPLY OPENJSON(BulkColumn, '$.definitions.Event.properties');
select * from #temp
Dies liefert eine Tabelle #temp
mit einer Spalte namens [key]
die id
enthält, DateTime
, Name
. In der benachbarten Spalte mit der Bezeichnung value
gibt es JSON-Hauptdaten, z. { "type":"string", "description": "....."}
Für jeden Artikel in [key]
Spalte hätte ich gerne eine benachbarte Spalte mit der type
, z. string
. Ich würde dies gerne tun, ohne die [key]
Feldnamen in die SQL-Abfrage zu codieren.