我使用VBScript來執行XMLBulkLoad到SQL Server 2008中 我上傳由以下觸發:XSD驗證問題做xmlbulkload時到SQL Server 2008
objBL.execute "schedules.xsd", "scheduletest.xml"
這是正確觸發。然而,當我嘗試使用我的架構上傳的是,我得到的錯誤:
XML SAX Parser: Data mapping to column 'ActivityID' was already found in the data. Make sure that no two schema definitions map to the same column.
的數據放進去,如果我更改架構使用<xs:choice>
標籤,但隨後這些標籤內的任何不進入表中只有兩行生成,沒有ActivityID,沒有開始和沒有結束 - 所有都是NULL。
我需要這些標記中的任何內容來生成數據庫中的新行,其值與之前相同。所以我目前的測試XML,它會產生:
booking-date, employee-id, level, planning-unit-id, activity-id, time-end, time-start,
2015-05-02 00:00:00, 1345, 8000, 1001, 2, 2015-05-02 20:30:00, 2015-05-02 13:00:00
2015-05-02 00:00:00, 1345, 8000, 1001, 1053, 2015-05-02 12:00:00, 2015-05-02 07:00:00
2015-05-01 00:00:00, 1350, 8000, 1001, 1053, 2015-05-01 11:00:00, 2015-05-01 07:00:00
我想我需要改變我的XSD允許這一點,但我根本無法看到。有什麼建議麼?
我的XSD是:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xs:element name="schedules" sql:is-constant="true">
<xs:complexType>
<xs:sequence>
<xs:element name="schedule" maxOccurs="unbounded" minOccurs="0" sql:relation="Merge_Schedule">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:dateTime" name="booking-date" sql:field="bookingdate" sql:datatype="dateTime"/>
<xs:element type="xs:integer" name="employee-id" sql:field="EmployeeID" sql:datatype="int"/>
<xs:element type="xs:integer" name="level" sql:field="LevelID" sql:datatype="int"/>
<xs:element type="xs:integer" name="planning-unit-id" sql:field="PlanningUnitID" sql:datatype="int"/>
<xs:element name="schedule-blocks" sql:is-constant="true">
<xs:complexType>
<xs:sequence>
<xs:element name="schedule-block" sql:is-constant="true">
<xs:complexType>
<xs:sequence>
<!-- <xs:choice maxOccurs="unbounded" minOccurs="0"> -->
<xs:element type="xs:integer" name="activity-id" sql:field="ActivityID" sql:datatype="int"/>
<xs:element type="xs:dateTime" name="time-end" sql:field="finish" sql:datatype="dateTime"/>
<xs:element type="xs:dateTime" name="time-start" sql:field="start" sql:datatype="dateTime"/>
<!-- </xs:choice> -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的XML是:
<?xml version="1.0" encoding="UTF-8"?>
<schedules type="array">
<schedule>
<booking-date type="date">2015-05-02 00:00:00</booking-date>
<employee-id type="integer">1345</employee-id>
<level type="integer">8000</level>
<planning-unit-id type="integer">1001</planning-unit-id>
<schedule-blocks type="array">
<schedule-block>
<activity-id>2</activity-id>
<time-end>2015-05-02 20:30:00</time-end>
<time-start>2015-05-02 13:00:00</time-start>
</schedule-block>
<schedule-block>
<activity-id>1053</activity-id>
<time-end>2015-05-02 12:00:00</time-end>
<time-start>2015-05-02 07:00:00</time-start>
</schedule-block>
</schedule-blocks>
</schedule>
<schedule>
<booking-date type="date">2015-05-01 00:00:00</booking-date>
<employee-id type="integer">1350</employee-id>
<level type="integer">8000</level>
<planning-unit-id type="integer">1001</planning-unit-id>
<schedule-blocks type="array">
<schedule-block>
<activity-id>1053</activity-id>
<time-end>2015-05-01 11:00:00</time-end>
<time-start>2015-05-01 07:00:00</time-start>
</schedule-block>
</schedule-blocks>
</schedule>
</schedules>