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

时间:2015-02-05 17:21:25

标签: c# xml azure bulk

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

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

    DECLARE @bulkQuery nvarchar(max) = N'INSERT INTO #BulkTable SELECT BulkColumn FROM Openrowset(Bulk ''' + @FilePath + ''', Single_Blob) X';

    EXECUTE sp_executesql @bulkQuery

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

  8. 但是,因为我发现OpenRowSet命令在SQL Azure中不可用(我认为这是由于SQL Azure数据库不能对文件进行本地访问),我尝试了另一种方法:< / p>

    使用Web作业,#6步骤为:

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

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

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

    希望你能帮助我, 非常感谢。

1 个答案:

答案 0 :(得分:0)

如果有帮助,请参阅此论坛帖子: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存储中,然后运行可以导入的工作者角色。