我正在Visual Studio 2019中使用SQL Server。我已经下载了一个大JSON文件for US Zip codes。我的目标是从字段中获取所有属性,如下所示:
并将其属性保存在我的数据库中。
我不在乎性能,因为我只想执行一次,因此可以永久访问它们。到目前为止,我可以得到这个:
但是它只是一长列。我试图做一些这样的选择语句:
SELECT
JSON_VALUE(v.[value],'$.fields.city') AS City
但是它带有JSON格式的文本,但不正确。如何将JSON文件放入数据库?
我终于解决了。解析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'
)