【问题标题】:How to get multiple columns of values from OPENJSON and cross apply如何从 OPENJSON 获取多列值并交叉应用
【发布时间】:2020-04-18 01:03:16
【问题描述】:

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

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

我不关心性能,因为我只想这样做一次,这样我就可以永远访问它们。到目前为止,我可以得到这个:

但它只是作为一长列出现。我试着做一些这样的选择语句:

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

但它带有错误的 JSON 格式文本。 如何将 JSON 文件导入我的数据库?

【问题讨论】:

  • 如果您可以将样本以文本值发布会更容易
  • @Avi 文本值是什么?我发布了 JSON 值的屏幕截图,这不是您的意思吗?
  • 如果示例数据是文本格式..人们可以复制过去并尝试他们的解决方案,否则他们也必须花时间创建示例数据

标签: json sql-server database open-json


【解决方案1】:

我终于解决了。解析 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'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多