SQLXMLBulkLoad架构验证问题(简单)

时间:2012-07-18 15:30:49

标签: sql xml bulk-load

我有一个庞大的XML文件,里面装满了员工和信息,并且有一个问题。

XML文件示例:

<Employees>
  <Employee>
    <EmployeeID>blah</EmployeeID>
    <FirstName>blah</FirstName>
    <LastName>blah</LastName>
    <MiddleName>blah</MiddleName>
    .......... and on
  </Employee>
    ........ and on
</Employees>

到目前为止,我的架构是这样的:

<?xml version="1.0" encoding="utf-8"?>

<xsd:element name="Employees" sql:relation="The_Employees">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="Employee">
                <xsd:element name="EmployeeID" sql:field="EmpNo" type="xsd:integer"/>
                <xsd:element name="FirstName" sql:field="FirstName">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:whiteSpace value="collapse"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
               .......... and on
            </xsd:element>
        </xsd:sequence> 
    </xsd:complexType>
</xsd:element>

从我的研究中,根元素应该包含与DB中的表的关系(为了隐私起见,本例中的名称是“The_Employees”)所以,我建立了这个关系,并且还创建了sql:表中每列的字段,因为在大多数情况下,列名称与XML元素标记不同。但是,我以何种方式将每个<Employee>标记与我的表格相关联?此外,在验证XML时,它会抛出此错误:

  

'Employee'的内容必须匹配(注释?,(simpleType |   complexType)?,(unique | key | keyref)*))。发现了一个问题   从:元素开始。

似乎验证器认为我正在尝试将内容拆分为两个单独的表,因此需要对其进行注释,但我不是。有什么建议吗?

仅供参考:这里的最终产品将是一个VB.NET程序,它使用SQLXMLBulkLoad将XML文件中的数据加载到新的SQL表中。

1 个答案:

答案 0 :(得分:0)

好吧......修复很简单,我正在回答这个问题,以便将来有人可以参考它。如果你有一个根元素以及该根元素下的每个单独的父元素,并且你正在使用BulkLoad,那么你可以将根元素设置为sql:is-constant = 1.这告诉架构根元素是否存在,但是忽略它。此外,上述架构被修改为:

<xsd:element name="Employees" sql:is-constant=1>
<xsd:complexType>
    <xsd:sequence>
        <xsd:element name="Employee" sql:relation="The_Employees">
          <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="EmployeeID" sql:field="EmpNo" type="xsd:integer"/>
            <xsd:element name="FirstName" sql:field="FirstName">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:whiteSpace value="collapse"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
           .......... and on
          </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
    </xsd:sequence> 
</xsd:complexType>

相关问题