【问题标题】:How I can insert JSON web service data into a SQL table using SQL query?如何使用 SQL 查询将 JSON Web 服务数据插入 SQL 表?
【发布时间】:2018-08-07 05:02:52
【问题描述】:

【问题讨论】:

  • 调用网络服务不是数据库的工作。这就是客户端应用程序的工作
  • @PanagiotisKanavos 你是对的,我刚刚编辑了我的答案以反映这一点......

标签: json sql-server web-services tsql sql-server-2008-r2


【解决方案1】:

这是一个非常糟糕的问题......

SQL-Server 不是从 Web 服务读取 JSON 的工具。这应该由您的应用程序完成。您可以在应用程序中解析 JSON 并传递解析的数据,也可以按原样传递 JSON 并使用 SQL-Server 的功能。

请注意,原生 JSON 支持在 v2008 R2 中不可用。 This was introduced with SQL Server 2016.

请发布您的 JSON 的简化(!)示例以及您希望如何插入它的表结构。最好的是 DDL 和一些代码来展示您自己的尝试并重现您的问题。 SO 上的人讨厌链接...
并且:SO 不是 do-my-work 平台...

只是一些提示如何继续(这对任何应用程序的代码都有效):

DECLARE @json NVARCHAR(MAX)=
N'PlaceTheJsonHere';

SELECT *
FROM OPENJSON(@json)

如果我从您的链接中得到两行,则返回两行,一行带有“成功”和一个数组,第二行带有“结果”和一个空数组。
所以我尝试进入数组

SELECT *
FROM OPENJSON(@json) A
OUTER APPLY OPENJSON(A.value)

现在我得到 402 行“成功”。该值是 - 再次 - 一个数组:

一个示例值如下所示

["049644010478","049644010478","049644010478","049644010478","\u06a9\u0646\u062a\u0648\u0631\u0647\u0627\u06cc \u0645\u0648\u0644\u062f \u0628\u0631\u0642 \u0634\u0645\u0627\u0644 \u063a\u0631\u0628","600\/5","1\/1","\u0633\u0627\u0632\u0645\u0627\u0646 \u0635\u0646\u0627\u064a\u0639 \u062f\u0641\u0627\u0639","\u062f\u0627\u0646\u0634\u06af\u0627\u0647-\u0645\u0648\u0644\u062f\u0628\u0631\u0642","\u0633\u0627\u0632\u0645\u0627\u0646 \u0635\u0646\u0627\u064a\u0639 \u062f\u0641\u0627\u0639",null,null,"13961210","0","12","10","1396","\u067e\u0646\u062c \u0634\u0646\u0628\u0647","1210","1210.0",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"OFFLINE"]

愚蠢的 \u0633 值是 unicode 代码点。

再深一层:

SELECT *
FROM OPENJSON(@json) A
OUTER APPLY OPENJSON(A.value) B
OUTER APPLY OPENJSON(B.value) C

现在我发现,第一行提供 56 个列名,而其他行提供内容。这似乎是一张桌子。下面显示了最后一列名称和第一个值的摘录(现在总共有超过 22500 行:

52  POWER_FACTOR_PHASE_A
53  POWER_FACTOR_PHASE_B
54  POWER_FACTOR_PHASE_C
55  READ_FLAG
0   049644009814
1   049644009814
2   049644009814
3   049644009814
4   کنتورهای مولد برق شمال غرب
5   1000/5
6   1/1
7   آفتاب 22(شرق بزگراه آزادگان-بين اتوبان کرج و حکيم(خرگوش دره) پ)

太棒了! JSON 引擎将 unicode 代码点隐式显示为可读字母!

我们现在知道什么?此 json 提供“成功”和“结果”部分。 "success 部分包含一个数组数组,其中第一个索引是列名数组,其余的是表格数据。

剩下的由你决定:-D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2016-05-05
    • 2021-05-08
    相关资源
    最近更新 更多