如何从OPENJSON获取多列值并交叉应用

问题描述 投票:0回答:1

我正在Visual Studio 2019中使用SQL Server。我已经下载了一个大JSON文件for US Zip codes。我的目标是从字段中获取所有属性,如下所示:

enter image description here

并将其属性保存在我的数据库中。

我不在乎性能,因为我只想执行一次,因此可以永久访问它们。到目前为止,我可以得到这个:

enter image description here

但是它只是一长列。我试图做一些这样的选择语句:

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

但是它带有JSON格式的文本,但不正确。如何将JSON文件放入数据库?

json sql-server database open-json
1个回答
0
投票

我终于解决了。解析JSON并将其添加到表中的最终SQL看起来像这样:

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'
)
© www.soinside.com 2019 - 2024. All rights reserved.