如何解决如何在Azure SQL或Azure CosmosDB上存储来自REST API调用的GET请求
我有一些连接到网络的温度记录器。 我可以在Postman应用中编写GET请求,以JSON格式接收温度的最新温度数据。 我的目标是自动进行API调用并将这些值存储在SQL或CosmosDB的Azure数据库中。
任何有关如何解决此问题的建议都将受到赞赏!
最好的问候, 马可
解决方法
最新
如果您有兴趣,可以了解ADF。
Copy data from an HTTP endpoint by using Azure Data Factory
重要
首先,我想在sql server中执行Http请求,返回数据然后进行处理,可以将其直接存储。并使计划的任务能够定期执行。
所有脚本均已在本地成功测试,但是在Azure数据库中执行时,发生了Could not find stored procedure'sp_OACreate
错误。
我试图找到原因并找到答案。
因此,您必须创建一个新程序(webjob或其他程序)以实现您的功能。您可以通过HttpClient
(在C#中)获取数据,并通过CURD存储数据。
应该再没有麻烦的方式了。
此外,据我了解,cosmosdb不支持类似的操作。
我的尝试步骤:
-
在本地sql服务器中创建一个函数。
-- Enable Ole Automation sp_configure 'show advanced options',1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures',1; GO RECONFIGURE; GO sp_configure 'show advanced options',0; GO RECONFIGURE; GO /****** Object: UserDefinedFunction [dbo].[fn_GetBlockFromAPI] Script Date: 8/21/2020 12:07:39 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[fn_SendHttpRequest] (@testurl NVARCHAR(20)) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @url VARCHAR(255); DECLARE @obj INT; DECLARE @hr INT; DECLARE @msg VARCHAR(8000); DECLARE @json NVARCHAR(4000); --Cannot use MAX with CLR stored procedures SET @url = 'http://www.tianqiapi.com/api?version=v6&appid=16879135&appsecret=ucyKFK6p';--@testurl EXEC @hr = sp_OACreate 'WinHttp.WinHttpRequest.5.1',@obj OUT -- Creates an instance of an OLE object IF @hr <> 0 BEGIN SET @Msg = 'sp_OACreate WinHttp.WinHttpRequest.5.1 failed. Cannot connect to Blockchain.info' GOTO Error END EXEC @hr = sp_OAMethod @obj,'Open',NULL,'GET',@Url,false -- Calls a method of an OLE object. IF @hr <> 0 BEGIN SET @msg = 'sp_OAMethod Open failed. Cannot connect to Blockchain.info' GOTO Error END EXEC @hr = sp_OAMethod @obj,'SetRequestHeader','Content-Type','multipart/form-data' IF @hr <> 0 BEGIN SET @msg = 'sp_OAMethod SetRequestHeader failed. Cannot connect to Blockchain.info' GOTO Error END EXEC @hr = sp_OAMethod @obj,SEND,'' IF @hr <> 0 BEGIN SET @msg = 'sp_OAMethod Send failed. Cannot connect to Blockchain.info' GOTO Error END EXEC @hr = sp_OAGetProperty @Obj,'ResponseText',@json OUTPUT IF @hr <> 0 EXEC sp_OAGetErrorInfo @Obj EXEC @hr = sp_OADestroy @obj RETURN @json Error: EXEC @hr = sp_OADestroy @obj RETURN @msg END
-
然后您可以查询
SELECT [dbo].[fn_SendHttpRequest]('')
。
获取数据后,您可以插入数据库。您还可以使用FOR JSON AUTO
处理数据。 但是在Azure SQL数据库中不支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。