Azure服务,用于接收XML数据并导入SQL数据库

时间:2016-03-22 16:28:13

标签: sql-server xml azure azure-sql-database azure-webjobs

我需要在我的Azure帐户上设置一个服务,该服务将接收XML数据并将其导入Azure SQL数据库。我希望能够从远程服务器(将在其中创建XML数据)连接到Azure,并将数据上传到自动解析并插入SQL数据库的位置。 XML数据将全部使用相同的列设置和数据类型进行格式化,因此解析应该不难。我陷入困境的只是试图弄清楚如何设置一个接收和解析数据的简单服务。我不想通过导入/导出向导,网站前端或类似的东西来做到这一点。它需要自动化,以便在收到数据时它可以运行。

请注意,我并不是真的要求代码来解决我的问题。我自己学习如何做到这一点很好,但是我似乎无法开始学习不少于3种新语言的全部内容......任何有关搜索帮助或从何处入手的帮助?

编辑:到目前为止,这是我能找到的最接近的东西。 http://www.freshconsulting.com/building-data-import-tool-azure-webjobs/唯一的问题是我可能无法访问SMTP中继来发送文件,所以我需要能够发送POST数据(或REST数据......?)并拥有数据在到达Azure时重构为XML或CSV文件,或者实时动态读取。第一种选择似乎最合理。有人有建议吗?

2 个答案:

答案 0 :(得分:1)

实现此类解决方案的一种方法是使用webjob并在azure存储(Queue或Blob)上的每个xml新消息上触发xml更新到sql。

使用WebJob SDK,您可以使用QueueTrigger属性

public static void HandleXMLdataFromQueueStorage([QueueTrigger("logqueue")] string logMessage, TextWriter logger)
{
    logger.WriteLine(logMessage);
}

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/

这是推荐的方法(速度,可靠性)。

您也可以将WebJob SDK与BlobTrigger属性

一起使用
public static void HandleXMLdataFromBlobStorage([BlobTrigger("input/{name}")] TextReader input)
{
// update SQL
}

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/

WebJobs SDK扫描日志文件以监视新的或更改的blob。这个过程不是实时的;在创建blob后几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证将捕获所有事件

希望这会有所帮助 最好的祝福 斯特凡

答案 1 :(得分:1)

你有几个选择。

您可以自己编写所有代码。没有什么可以阻止你站在一个简单的HTTP前端并在那里发布你的XML。这将是(比如说)作为Azure Web App托管的简单Web API,它接受您的XML并使用Entity Framework等将其粉碎到您的SQL数据库中。

https://azure.microsoft.com/en-us/services/app-service/web/

这样做的好处是简单,但如果您的XML非常大或频繁上传(必须小心缓冲等),可能会导致效率低下的潜在缺点。

与stephgou提到的一样,您可以使用WebJob侦听队列或blob容器,并在队列/ blob容器中显示的新项目上触发碎化和SQL插入。您仍然需要一种方法来获取数据。这可能是您编写的HTTP API,也可能是您可以使用第三方工具手动上传:

http://storagetools.azurewebsites.net/

......或Powershell:

https://azure.microsoft.com/en-us/documentation/articles/storage-powershell-guide-full/

还有一项称为Azure数据工厂的功能,在某种意义上说是#34;云中的SQL Server Integration Services" ...您创建ETL管道以将数据导入Azure,粉碎和转换根据需要,然后处理它(在你的情况下,"处理"只是将它写入SQL):

https://azure.microsoft.com/en-us/services/data-factory/

要考虑的另一件事是成本。站在专用的HTTP前端进行不常上传可能不是最有效的使用你的钱。像Data Factory这样的服务具有按使用计费的优势(或多或少,详见此处...... https://azure.microsoft.com/en-us/pricing/details/data-factory/)。您的里程数可以而且会有所不同,重点是您需要考虑您将消耗的资源,持续时间和频率,以便计算成本随时间的变化。

祝你好运!