2017-02-22 29 views
0

Я хочу импортировать большой файл в формате JSON с этой структурой:Импорт файла JSON в базу данных SQL Server с помощью vb.net

{ 
    "series_id":"NG.RL2R04SOK_1.A", 
    "name":"Oklahoma Natural Gas Plant Liquids, Reserves Revision Decreases, Annual", 
    "units":"Million Barrels", 
    "f":"A", 
    "unitsshort":"MMbbl", 
    "description":"Oklahoma Natural Gas Plant Liquids, Reserves Revision Decreases", 
    "copyright":"None","source":"EIA, U.S. Energy Information Administration", 
    "iso3166":"USA-OK", 
    "start":"1979", 
    "end":"2008", 
    "last_updated":"13-AUG-13 11.49.51 AM", 
    "data":[ 
    ["2008","136"], 
    ["2007","73"], 
    ... 
    ["1980","69"], 
    ["1979","54"] 
    ] 
} 

в базу данных SQL Server.

Обычно я использую VB.net для импорта CSV/TXT/Excel в эту базу данных, но я не знаю JSON.

Есть ли простой способ сделать это?

Большое спасибо

+0

Если вы хотите сохранить json string/file, сохраните его. Вы действительно спрашиваете, как десериализовать json для данных, чтобы вы могли импортировать/сохранять различные элементы данных? – Plutonix

+0

Из вашего описания это похоже на то, что вы пытаетесь сделать это непосредственно на сервере sql, без vb.net. Это так? – user5226582

+0

Нет, нет простого способа сделать это – rheitzman

ответ

0

В SQL Server 2016 можно открыть (и импорт) JSON-файлы непосредственно с помощью TSQL:

SELECT import.* 
FROM OPENROWSET (BULK 'f:\import.json', SINGLE_CLOB) as j 
CROSS APPLY OPENJSON(BulkColumn) 
WITH( 
    [series_id] nvarchar(100), 
    [name]   nvarchar(100), 
    [units]  nvarchar(100), 
    [f]   nvarchar(100), 
    [unitsshort] nvarchar(100), 
    [description] nvarchar(100), 
    [copyright] nvarchar(100), 
    [iso3166]  nvarchar(100), 
    [start]  int, 
    [end]   int, 
    [last_updated] nvarchar(100), 
    [data]   nvarchar(100) 
) AS import 

Этот запрос возвращает таблицу, содержащую данные, считываемые из JSon файла и организованы с столбцы, указанные в предложении WITH.