如何使用 SQL 查询将 JSON Web 服务数据插入 SQL table?

How I can insert JSON web service data into a SQL table using SQL query?

我的 link 是: http://emkan.bstc.ir:8082/bstco/emkan/mgmt/server/index.php?road=webapi/testwebservice/getDataEmkan&Date1=13961210&Date2=13961210&Hour1=0&Hour2=0&usr=movalled&pwd=123456&pulist=3,17366,17368,17370,17364,17372,17374,17378,17377,17379,17380,17381,17382,17392,17394,17396,17388,17390,17409,17411,17413,17405,17407,&ctpt=2

我想从网络服务中检索数据,然后将其插入 SQL table.

这是一个很糟糕的问题...

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

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

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

只是一些如何进行的提示(同样适用于任何应用程序的代码):

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

SELECT *
FROM OPENJSON(@json)

returns 如果我从你的 link 中得到两行,第一行带有 "success" 和一个数组,第二行带有 "result" 和一个空数组。
所以我尝试进入数组

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

现在我用 "success" 得到 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个列名,而其他行提供了内容。这似乎是一个table。下面显示了最后一个列名和第一个值的摘录(现在总共有超过 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" 和一个 "result" 部分。 “成功部分包含一个数组数组,其中第一个索引是列名数组,其余是表格数据。

剩下的就看你了:-D