Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载XML文件_C#_.net_Xml_Sql Server 2008_Xsd - Fatal编程技术网

C# 加载XML文件

C# 加载XML文件,c#,.net,xml,sql-server-2008,xsd,C#,.net,Xml,Sql Server 2008,Xsd,我目前正在加载大量(1KB-6MB的数千个文件)XML文件,并将它们加载到目标数据库中。目前,我正在使用SQLXMLBULKLOAD COM对象。我遇到的最大问题之一是COM对象在我们的事务环境中并不总是很好地发挥作用。还有其他问题,比如性能;这个过程真的开始阻塞接近2MB的文件,需要几分钟,甚至在某些情况下(几个小时)才能加载到表中 所以现在我在寻找一种替代品,它似乎有两种口味: 1) 类似于OPENXML,其中XML作为XML数据插入SQL Server 或 2) 解析内存中的XML并将其作

我目前正在加载大量(1KB-6MB的数千个文件)XML文件,并将它们加载到目标数据库中。目前,我正在使用SQLXMLBULKLOAD COM对象。我遇到的最大问题之一是COM对象在我们的事务环境中并不总是很好地发挥作用。还有其他问题,比如性能;这个过程真的开始阻塞接近2MB的文件,需要几分钟,甚至在某些情况下(几个小时)才能加载到表中

所以现在我在寻找一种替代品,它似乎有两种口味:

1) 类似于OPENXML,其中XML作为XML数据插入SQL Server

2) 解析内存中的XML并将其作为行集加载到数据库中的解决方案

这两种方法都有缺点,我知道在得出任何结论之前,我必须开始对原型解决方案进行基准测试。OPENXML方法在IMO中非常有吸引力,主要是因为它承诺了一些非常好的性能数字(其他声称从小时到毫秒)。但它的缺点是将数据存储为XML—在我的特定场景中并不理想,因为目标表已经存在,并且许多其他进程依赖于查询和存储过程,这些查询和存储过程将这些表作为普通行集数据进行查询

无论我选择何种解决方案,我必须满足以下要求:

1) 必须接受任何XML文件。客户机(在业务意义上)只需要为数据提供一个XSD和一个适当的目标数据库/表

2) 单个文件(从不超过~6MB)必须在1分钟内处理完毕(理想情况下甚至比这快得多)

3) 插入的数据必须能够容纳现有查询和存储过程(即,最终必须作为正常行集数据结束)

所以我的问题是,你在这种情况下有经验吗?你的想法和见解是什么

我并不完全反对类似OPENXML的解决方案,只要数据在某种程度上可以作为正常的行集数据结束。我还对您可能有经验的第三方解决方案感兴趣,这是我们流程中的一个重要部分,如果它为我们提供了最佳和最稳定的解决方案,我们愿意花费一些美元


我也不反对“滚动您自己的”建议,或Codeplex上的东西,等等。我遇到了LINQ到XSD项目,但找不到关于其功能的很多文档(就像我感兴趣的东西的示例一样)

我将重新讨论您在SQLXMLBULKLOAD COM中遇到的性能问题。我以前使用过这个组件来加载500MB的xml文件。您可以发布用于调用组件的代码吗

我将再次讨论您在使用SQLXMLBULKLOAD COM时遇到的性能问题。我以前使用过这个组件来加载500MB的xml文件。您可以发布用于调用组件的代码吗

有什么理由不使用SSIS,因为这就是它的设计目的吗?我一点也不反对SSIS,这是我们正在考虑的替代方案。我不太喜欢SSIS,你能告诉我它的优点是什么吗?我更喜欢SSIS,因为如果包或其他参数发生更改,就不会有配置文件或重新编译项目,只需在BMO IDE中修改或更新SSIS包。这里有几个我之前跟踪的SO链接。。。谢谢你有用的回复。我很欣赏你的见解。你有什么理由不使用SSIS,因为这就是它的设计目的吗?我一点也不反对SSIS,这是我们正在考虑的替代方案。我不太喜欢SSIS,你能告诉我它的优点是什么吗?我更喜欢SSIS,因为如果包或其他参数发生更改,就不会有配置文件或重新编译项目,只需在BMO IDE中修改或更新SSIS包。这里有几个我之前跟踪的SO链接。。。谢谢你有用的回复。我很欣赏你的见解。你能说一下加载这个500MB的xml文件大概需要多长时间吗?我看到的大多数
SqlXMLBulkload
帖子都在抱怨性能(大约每MB几分钟?)。因此,获得一个相反的数据点将是非常好的。我猜不删除约束(或不使用临时表)可能是一个问题。对不起,这是很久以前的事了。我不记得要等很久。你能说一下加载那个500MB的xml文件大概需要多长时间吗?我看到的大多数
SqlXMLBulkload
帖子都在抱怨性能(大约每MB几分钟?)。因此,获得一个相反的数据点将是非常好的。我猜不删除约束(或不使用临时表)可能是一个问题。对不起,这是很久以前的事了。不过我不记得要等很久。