2017-11-24 6 views
0

私はを使用してjsonファイルをSQLに解析しようとしています。私は選択クエリとpropertiesセクションの各項目についてtypeフィールドを読みしようとしているOPENJSONでazure sqlでjsonを解析しています

{ 
    "definitions": {    
     "Event": { 
      "properties": { 
       "id": { 
        "type": "string", 
        "description": "System-generated Id" 
       }, 
       "transactionDateTime": { 
        "type": "string", 
        "description": "RFC3339-compliant, system-generated timestamp" 
       }, 
       "Name": { 
        "type": "string", 
        "description": "blah" 
       } 
     } 
    } 
} 

:私はこのようになります構造を有しています。

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 

これは、idが含ま[key]と呼ばれる列を持つテーブル#tempを返しDateTimeNamevalueと呼ばれる隣接列にはバルクjsonデータが存在する。 { "type":"string", "description": "....."}

[key]列の各項目については、隣接列にtypeを付けたいと思います。 。私はハードクエリのフィールド名に[key]をコーディングせずにこれをしたいと思います。

enter image description here

答えて

0

私は、JSONを読むためにOPENROWSETを呼び出して、最初のJSONをインポートするために変数を使用して、以下の解決策を見つけることができました。

DECLARE @json varchar(max); 
SELECT @json = BulkColumn FROM OPENROWSET(BULK 'C:\swagger.json', SINGLE_CLOB) as j; 

DROP TABLE if exists #temp; 
SELECT value INTO #temp FROM OPENJSON(@json, '$.definitions.Event.properties') 
関連する問題