c# - 每天将大量 XML 数据(> 1Gb)导入 SQL Server 2008

标签 c# sql-server xml ssis xsd

我遇到了一个问题,我需要每天将一个巨大的 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 Server 中的数据,如搜索、检索等(只读操作)。

我能想到的实现步骤是这样的:

  1. 根据提供的XSD(手动)定义对象模型,对象模型将用于WCF服务返回值。
  2. 根据提供的 XSD(手动)定义数据库模式,该模式估计有大约 20 - 30 个表。
  3. 创建一个 SSIS 包,每天将 XML 加载到数据库中。
  4. 创建一个 WCF 服务,该服务从数据库中读取数据,将数据填充到第 1 步中定义的对象模型中,并将该对象返回给服务客户端。

问题在于这些步骤涉及大量手动工作。我必须逐行研究 XSD,并手动将其转换为对象模型和数据库模式。

我做了一些研究,发现有一些自动化工具可以将 XSD 转换为类,也可以将 XSD 转换为数据库架构。但是用工具从XSD转换出来的类很乱,而且因为不符合MS数据集格式,转换成schema也失败了。

请问有没有什么好的解决办法,省去很多手工工作?

感谢任何建议!

最佳答案

在某些时候,您必须进行转换。无论您这样做是将 XML 读入对象还是读入表中的数据。这项工作应该完成一次,然后您只需要运行生成的过程。我看到的问题是:

  • XML 非常大。

  • 您还没有 XSD 到所需架构的映射。

映射是您必须要做的工作。我认为,如果您可以将 XSD 导入到表中,然后从这些临时表导入到您希望使用的模式,那么性能会最好。使用 XML 文件会因其大小而给您带来问题。

所以我的建议是强制/混淆将 XML 导入到任何表结构中。然后编写一个存储过程以将这些表中的数据“导入”到您的“真实”模式中。

帕特奥

关于c# - 每天将大量 XML 数据(> 1Gb)导入 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772372/

相关文章:

c# - Renci SSH.NET : can create symlink, 但删除符号链接(symbolic link)失败,为什么?

c# - 在 C# 中将 Excel 范围作为文本数组或单元格格式的快速方法?

sql - 我可以在 SQL Server 2012 中的多个列上创建索引吗?

java - Android 中自动创建尺寸

c# - 使用 PrincipalSearcher.FindAll() 时发生内存泄漏

c# - 十进制可空值和十进制值的总和

java - 从 Java 中的 SQL 查询(SELECT FROM WHERE)中检索数据

sql-server - 可以通过SQL Server查看系统信息吗

android - 不同设备的相同大小的滚轮菜单?

java - SoapUI 执行涉及 XSD 的 WSDL 时出现问题,其中包括 (<xsd :include/>) another XSD