每天将巨大的XML数据(> 1Gb)导入SQL Server 2008

Vev*_*eve 7 c# xml sql-server xsd ssis

我遇到了一个问题,我需要每天将一个巨大的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>
Run Code Online (Sandbox Code Playgroud)

导入后,将实现WCF服务以检索存储在SQL Sever中的数据,例如搜索,检索等(只读操作).

我能想到的实施步骤如下:

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

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

我做了一些研究,有一些自动化工具可以将XSD转换为类,还可以将XSD转换为数据库模式.但是使用该工具从XSD转换的类非常混乱,并且转换为模式失败,因为它不符合MS数据集格式.

我想知道这个问题是否有任何好的解决方案,以节省大量的手工工作?

任何建议表示赞赏!

Pat*_*t O 3

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

  • XML 非常大。

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

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

所以我的建议是强制/捏造将 XML 导入到任何可以工作的表结构中。然后编写一个存储过程将这些表中的数据“导入”到“真实”架构中。

帕特奥