如何使用 SQL 查询将 JSON Web 服务数据插入 SQL table?
How I can insert JSON web service data into a SQL table using SQL query?
我想从网络服务中检索数据,然后将其插入 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
我想从网络服务中检索数据,然后将其插入 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