有人可以指导我解决这个问题吗?
在我的机构中,我们处理大尺寸(最大1 GB)的xml文件,并将详细信息插入数据库表中。根据当前的设计,我们使用XmlReader解析xml文件并形成包含所需数据的xml字符串,然后将其传递到存储过程(xml数据类型)以将详细信息插入到db中。
现在问题是我们不确定除此之外是否会有更好的方法?所以请建议.Net 3.5和/或sql server 2005是否有任何新功能可以比我们的方法更好地处理这个问题。
对此reagrd的任何帮助都将受到高度赞赏。
感谢。
答案 0 :(得分:1)
您是否关心XML文件中的所有内容?如果没有,您可以使用StreamReader
并从XML获取文本,然后将其传递给数据库。
如果您需要验证XML是否正确,最好使用XmlReader
。
然而,只是将1GB的XML转储到您的数据库中似乎有点奇怪,这个XML数据的目的是什么?它有很多嵌套元素吗?也许你可以对它进行反序列化并将每个对象存储在appropriet表中,这样就可以实现更容易理解的设计。
您可以考虑使用一些方法来简化/更好地设计软件:
MemoryMappedFile
?答案 1 :(得分:0)
我怀疑如果存在任何性能问题,它将与存储过程和数据库端相关,而不是读取文件。
为什么要将XML文件存储在数据库表中?我建议使用不同的解决方案是合适的,但是如果不了解更多有关您正在尝试做什么的详细信息,则很难提出建议。
答案 2 :(得分:0)
如果xml中的每个第一级元素都是记录,即
<rootNode>
<row>...</row>
<row>...</row>
<row>...</row>
</rootNode>
然后你可以创建一个IDataReader
实现来读取xml(通过XmlReader
)并将每个实现作为记录呈现,以便使用SqlBulkCopy
导入。非常像我以前的回答here。
优点:
SqlBulkCopy
是 将数据导入数据库的最快方式