Как получить несколько столбцов значений из OPEN JSON и применить кросс - PullRequest
0 голосов
/ 18 апреля 2020

Я использую SQL Сервер внутри Visual Studio 2019. Я скачал большой JSON файл для почтовых индексов США . Моя цель - получить все свойства из полей, которые выглядят так:

enter image description here

и сохранить их свойства в моей базе данных.

Меня не волнует производительность, так как я просто хочу сделать это один раз, чтобы я мог получить к ним доступ навсегда. До сих пор я могу получить это:

enter image description here

Но это всего лишь один длинный столбец. Я попытался сделать некоторые операторы выбора, как это:

SELECT
JSON_VALUE(v.[value],'$.fields.city')   AS City

, но он поставляется с неправильно отформатированным текстом JSON. Как я могу получить файл JSON в мою БД?

1 Ответ

0 голосов
/ 18 апреля 2020

Я наконец решил это. Финальный SQL для анализа JSON и добавления его в таблицу выглядит так:

DECLARE @ZIP VARCHAR(MAX)
SELECT @ZIP = BulkColumn FROM OPENROWSET(BULK 'D:\Downloads\us-zip-code-latitude-and-longitude.json', SINGLE_CLOB) AS j
SELECT * 
INTO ZipData
FROM OPENJSON(@ZIP)
WITH (
    City VARCHAR(255) '$.fields.city',
    Zip INT '$.fields.zip',
    DST INT '$.fields.dst',
    Longitude FLOAT '$.fields.longitude',
    State VARCHAR(255) '$.fields.state',
    Latitude FLOAT '$.fields.latitude',
    TimeZone INT '$.fields.timezone'
)
...