c# - 将大量 XML 插入 sql azure 数据库的正确方法

标签 c# xml azure bulk

目前,我们公司正在将应用程序迁移到云 (Azure),我们有一个命令行应用程序执行以下步骤。

  1. 下载一个文件,其中包含包含更新记录的压缩和签名 xml 文件列表。
  2. 是否有更新或新记录
  3. 下载压缩的 xml 文件
  4. 解压 xml 文件
  5. 取消对 xml 文件的签名
  6. 在存储过程中使用此脚本将每个 xml 插入临时表

    声明 @bulkQuery nvarchar(max) = N'INSERT INTO #BulkTable 选择批量列 FROM Openrowset(Bulk ''' + @FilePath + ''', Single_Blob) X';

    执行 sp_executesql @bulkQuery

  7. 将目标表与临时表合并。

但是,由于我发现 OpenRowSet 命令在 SQL Azure 中不可用(我认为这是由于 SQL Azure 数据库没有对文件的本地访问权限),因此我尝试了一种不同的方法:

使用 Web 作业,第 6 步是这样的:

  • 6.1 将 xml 加载到 XmlDocument 对象中
  • 6.2 对 XMLDocument 创建 linq 查询以组织记录
  • 6.3 对于查询中的每条记录,使用 LINQ to SQL 进行插入。

事实是,第二种方法有效,但每个 xml 文件需要 3 小时,而旧应用程序需要 20 分钟才能处理所有 xml 文件。 (我忘了说,通常应用程序会下载4个xml文件,每个文件包含250,000条记录)

我知道第二种方法不是最好的方法,我一直在寻找如何改进它(正确的方法),但我还没有找到类似的东西。

希望你能帮助我, 多谢。

最佳答案

如果有帮助,请参阅此论坛帖子:https://social.msdn.microsoft.com/Forums/azure/en-US/861d2307-43b9-4a87-99d9-a406ad581ea3/bulk-load-xml-files-to-sql-azure?forum=windowsazuredata

对于我来说,我会将 XML 文件上传到 Azure Blob 存储中,然后运行辅助角色来执行导入。

关于c# - 将大量 XML 插入 sql azure 数据库的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350187/

相关文章:

C# 嵌套类属性

c# - Api Controller 中长时间运行的任务(使用 Web API,自托管 OWIN)

java - 如何从数组生成 ListView 中的项目?

Android xml id命名

azure - 当逻辑应用连接无效时如何收到警报

azure - VS设置: "enable isolated azure active directory configuration" do?是什么意思

c# - 从 ASP.NET 网站获取 IIS 站点名称

c# - 如何将ldap请求更改为关系数据库?

xml - 如何记录 XML 模式?

android - 如何在 Azure Devops 管道中运行 Espresso UI 测试