我遇到了一个问题,我需要每天将大量XML(> 1Gb)导入SQL Server 2008。我现在拥有的是一个示例XML文件及其XML模式。 XML模式非常复杂,包含许多自定义的简单类型和复杂类型的元素,如:
<xs:element name="xxxx_url">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute ref="target" use="optional"/>
<xs:attribute ref="abc" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
导入后,将实现WCF服务以检索存储在SQL Sever中的数据,例如搜索,检索等(只读操作)。
我能想到的实施步骤如下:
问题是这些步骤涉及大量的手工工作。我必须逐行研究XSD,并将其转换为对象模型和数据库模式mannualy。
我做了一些研究,有一些自动化工具可以将XSD转换为类,还可以将XSD转换为数据库模式。但是使用该工具从XSD转换而来的类非常混乱,并且转换为模式失败,因为它不符合MS数据集格式。
我想知道这个问题是否有任何好的解决方案,以节省大量的手工工作?
任何建议都表示赞赏!
答案 0 :(得分:3)
在某些时候你必须进行转型。您是否这样做是将XML读入对象或读取表中的数据。工作应该完成一次,然后你只需要运行生成的过程。我看到的问题是:
XML非常大。
您还没有将XSD映射到所需的架构。
映射是您必须要做的工作。如果您可以将XSD导入到表中,然后从这些临时表导入到您希望使用的模式,我认为它会表现最佳。使用XML文件会因其大小而给您带来问题。
所以我的建议是强制/捏造XML导入到表格结构的工作中。然后编写一个存储过程,将这些表中的数据“导入”到“真实”模式中。
Pat O
答案 1 :(得分:0)
尝试将xml拆分为多一个文件,因为未来出现类似问题
由于上传错误,ýÿơƝƈï
可能会出现在数据库中
答案 2 :(得分:0)
简而言之,我们的解决方案需要一些工作 - 没有快速解决方案。
对于可伸缩性,我建议使用一种技术,允许您流式传输XML(a-la SAX),而不是尝试在RAM中加载和转换所有内容。出于SSIS的目的,将XML转换为对象图没有很多价值,因此请考虑以下任何机会:
答案 3 :(得分:0)
您是否拥有可以发布至少一个完整记录数据的示例数据?
另外,您是否可以访问用于创建此XML数据的源数据库? XML实际上并不是为这种大小的数据传输而设计的 - 使用每个表格的平面文件格式的数据会更容易。
答案 4 :(得分:0)
SQL Server内置了XML类型 - 它可以create tables from your schema。
他们会帮助你吗?