Надеюсь, у вас все хорошо.
Ранее я задавал вопрос , как импортировать XML-файл в SQL Server , благодаря всем вашим ответам.
Как мойисходный файл поставляется с большим количеством данных, я пытаюсь загрузить SSIS.Ниже приведены шаги, которые я выполнил:
- Импортированный XML с помощью BulkLoad в столбец типа XML
- Созданная схема XSD из этого XML-файла в SQL Server
- Сейчас вСлужба SSIS использовала источник XML и предоставила схему XML для сопоставления с назначением OLEDB.
Но выполнение не удалось, сказав
"Ошибка: 0xC02090E7 при загрузке XML,Источник XML 1 : компонент "Источник XML" (1) не смог прочитать данные XML. DTD запрещен в этом документе XML. "
BOL говоритSSIS не поддерживает DTD, и мы никак не можем избежать DTD в моем исходном файле.
Пожалуйста, кто-нибудь поможет мне решить эту проблему.
Вот мой XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE _line_feed [
<!ELEMENT FeedTime (#PCDATA)>
<!ELEMENT lastContest (#PCDATA)>
<!ELEMENT lastGame (#PCDATA)>
<!ELEMENT contest_maximum (#PCDATA)>
<!ELEMENT contestantnum (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT event (event_datetimeGMT, gamenumber, sporttype, league, contest_maximum?, description?, (participants | periods | total)+)>
<!ELEMENT event_datetimeGMT (#PCDATA)>
<!ELEMENT gamenumber (#PCDATA)>
<!ELEMENT league (#PCDATA)>
<!ELEMENT odds (moneyline_value, to_base?)>
<!ELEMENT over_adjust (#PCDATA)>
<!ELEMENT participants (participant*)>
<!ELEMENT participant (participant_name, contestantnum, rotnum, visiting_home_draw?, odds?, pitcher?)>
<!ELEMENT participant_name (#PCDATA)>
<!ELEMENT periods (period*)>
<!ELEMENT period (period_number, period_description, periodcutoff_datetimeGMT, period_status, period_update, spread_maximum?, moneyline_maximum?, total_maximum?, moneyline?, spread?, total?)>
<!ELEMENT period_number (#PCDATA)>
<!ELEMENT period_description (#PCDATA)>
<!ELEMENT period_status (#PCDATA)>
<!ELEMENT period_update (#PCDATA)>
<!ELEMENT periodcutoff_datetimeGMT (#PCDATA)>
<!ELEMENT _line_feed (FeedTime, lastContest, lastGame, events)>
<!ELEMENT events (event*)>
<!ELEMENT pitcher (#PCDATA)>
<!ELEMENT rotnum (#PCDATA)>
<!ELEMENT sporttype (#PCDATA)>
<!ELEMENT moneyline (moneyline_visiting, moneyline_home, moneyline_draw?)>
<!ELEMENT moneyline_value (#PCDATA)>
<!ELEMENT moneyline_visiting (#PCDATA)>
<!ELEMENT moneyline_home (#PCDATA)>
<!ELEMENT moneyline_draw (#PCDATA)>
<!ELEMENT moneyline_maximum (#PCDATA)>
<!ELEMENT spread (spread_visiting, spread_adjust_visiting, spread_home, spread_adjust_home)>
<!ELEMENT spread_adjust_home (#PCDATA)>
<!ELEMENT spread_adjust_visiting (#PCDATA)>
<!ELEMENT spread_home (#PCDATA)>
<!ELEMENT spread_maximum (#PCDATA)>
<!ELEMENT spread_visiting (#PCDATA)>
<!ELEMENT to_base (#PCDATA)>
<!ELEMENT total (total_points, over_adjust?, under_adjust?, units?)>
<!ELEMENT total_maximum (#PCDATA)>
<!ELEMENT total_points (#PCDATA)>
<!ELEMENT under_adjust (#PCDATA)>
<!ELEMENT units (#PCDATA)>
<!ELEMENT visiting_home_draw (#PCDATA)>
]>
<_line_feed>
<FeedTime>1279783821193</FeedTime>
<lastContest>4118567</lastContest>
<lastGame>58681915</lastGame>
<events>
<event>
<event_datetimeGMT>2010-07-22 20:05</event_datetimeGMT>
<gamenumber>174201668</gamenumber>
<sporttype>Tennis</sporttype>
<league>M Atlanta 16</league>
<participants>
<participant>
<participant_name>A. Roddick</participant_name>
<contestantnum>4333</contestantnum>
<rotnum>4333</rotnum>
<visiting_home_draw>Visiting</visiting_home_draw>
</participant>
<participant>
<participant_name>R. Ram</participant_name>
<contestantnum>4334</contestantnum>
<rotnum>4334</rotnum>
<visiting_home_draw>Home</visiting_home_draw>
</participant>
</participants>
<periods>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>I</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>1500</moneyline_maximum>
<total_maximum>500</total_maximum>
<moneyline>
<moneyline_visiting>-1850</moneyline_visiting>
<moneyline_home>1290</moneyline_home>
</moneyline>
</period>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>2000</moneyline_maximum>
<total_maximum>500</total_maximum>
<spread>
<spread_visiting>-5.5</spread_visiting>
<spread_adjust_visiting>-124</spread_adjust_visiting>
<spread_home>5.5</spread_home>
<spread_adjust_home>106</spread_adjust_home>
</spread>
<total>
<total_points>19.5</total_points>
<over_adjust>113</over_adjust>
<under_adjust>-132</under_adjust>
</total>
</period>
<period>
<period_number>1</period_number>
<period_description>1st Set</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>I</period_status>
<period_update>open</period_update>
<spread_maximum>5000</spread_maximum>
<moneyline_maximum>250</moneyline_maximum>
<total_maximum>5000</total_maximum>
<moneyline>
<moneyline_visiting>-675</moneyline_visiting>
<moneyline_home>497</moneyline_home>
</moneyline>
</period>
</periods>
</event>
<event>
<event_datetimeGMT>2010-07-22 20:05</event_datetimeGMT>
<gamenumber>174263209</gamenumber>
<sporttype>Tennis</sporttype>
<league>M Atlanta 16</league>
<participants>
<participant>
<participant_name>I. Marchenko</participant_name>
<contestantnum>4335</contestantnum>
<rotnum>4335</rotnum>
<visiting_home_draw>Visiting</visiting_home_draw>
</participant>
<participant>
<participant_name>X. Malisse</participant_name>
<contestantnum>4336</contestantnum>
<rotnum>4336</rotnum>
<visiting_home_draw>Home</visiting_home_draw>
</participant>
</participants>
<periods>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>2000</moneyline_maximum>
<total_maximum>500</total_maximum>
<moneyline>
<moneyline_visiting>139</moneyline_visiting>
<moneyline_home>-151</moneyline_home>
</moneyline>
</period>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>2000</moneyline_maximum>
<total_maximum>500</total_maximum>
<spread>
<spread_visiting>2</spread_visiting>
<spread_adjust_visiting>100</spread_adjust_visiting>
<spread_home>-2</spread_home>
<spread_adjust_home>-117</spread_adjust_home>
</spread>
<total>
<total_points>22.5</total_points>
<over_adjust>-108</over_adjust>
<under_adjust>-108</under_adjust>
</total>
</period>
<period>
<period_number>1</period_number>
<period_description>1st Set</period_description>
<periodcutoff_datetimeGMT>2010-07-22 20:05</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>5000</spread_maximum>
<moneyline_maximum>500</moneyline_maximum>
<total_maximum>5000</total_maximum>
<moneyline>
<moneyline_visiting>115</moneyline_visiting>
<moneyline_home>-134</moneyline_home>
</moneyline>
</period>
</periods>
</event>
<event>
<event_datetimeGMT>2010-07-22 21:30</event_datetimeGMT>
<gamenumber>174271178</gamenumber>
<sporttype>Tennis</sporttype>
<league>M Atlanta 16</league>
<participants>
<participant>
<participant_name>K. Andersoõn</participant_name>
<contestantnum>4341</contestantnum>
<rotnum>4341</rotnum>
<visiting_home_draw>Visiting</visiting_home_draw>
</participant>
<participant>
<participant_name>D. Young</participant_name>
<contestantnum>4342</contestantnum>
<rotnum>4342</rotnum>
<visiting_home_draw>Home</visiting_home_draw>
</participant>
</participants>
<periods>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 21:30</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>2000</moneyline_maximum>
<total_maximum>500</total_maximum>
<moneyline>
<moneyline_visiting>-148</moneyline_visiting>
<moneyline_home>136</moneyline_home>
</moneyline>
</period>
<period>
<period_number>0</period_number>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT>2010-07-22 21:30</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>500</spread_maximum>
<moneyline_maximum>2000</moneyline_maximum>
<total_maximum>500</total_maximum>
<spread>
<spread_visiting>-2</spread_visiting>
<spread_adjust_visiting>-121</spread_adjust_visiting>
<spread_home>2</spread_home>
<spread_adjust_home>104</spread_adjust_home>
</spread>
<total>
<total_points>22.5</total_points>
<over_adjust>-111</over_adjust>
<under_adjust>-105</under_adjust>
</total>
</period>
<period>
<period_number>1</period_number>
<period_description>1st Set</period_description>
<periodcutoff_datetimeGMT>2010-07-22 21:30</periodcutoff_datetimeGMT>
<period_status>O</period_status>
<period_update>open</period_update>
<spread_maximum>5000</spread_maximum>
<moneyline_maximum>500</moneyline_maximum>
<total_maximum>5000</total_maximum>
<moneyline>
<moneyline_visiting>-126</moneyline_visiting>
<moneyline_home>108</moneyline_home>
</moneyline>
</period>
</periods>
</event>
...
...
</events>
</_line_feed>
Используемый файл схемы XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="_line_feed">
<xs:complexType>
<xs:sequence>
<xs:element name="FeedTime" type="xs:unsignedLong" />
<xs:element name="lastContest" type="xs:unsignedInt" />
<xs:element name="lastGame" type="xs:unsignedInt" />
<xs:element name="events">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="event">
<xs:complexType>
<xs:sequence>
<xs:element name="event_datetimeGMT" type="xs:string" />
<xs:element name="gamenumber" type="xs:unsignedInt" />
<xs:element name="sporttype" type="xs:string" />
<xs:element name="league" type="xs:string" />
<xs:element minOccurs="0" name="contest_maximum" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="description" type="xs:string" />
<xs:element name="participants">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="participant">
<xs:complexType>
<xs:sequence>
<xs:element name="participant_name" type="xs:string" />
<xs:element name="contestantnum" type="xs:unsignedInt" />
<xs:element name="rotnum" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="odds">
<xs:complexType>
<xs:sequence>
<xs:element name="moneyline_value" type="xs:string" />
<xs:element name="to_base" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="visiting_home_draw" type="xs:string" />
<xs:element minOccurs="0" name="pitcher" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="total">
<xs:complexType>
<xs:sequence>
<xs:element name="total_points" type="xs:decimal" />
<xs:element name="units" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="periods">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element maxOccurs="unbounded" name="period">
<xs:complexType>
<xs:sequence>
<xs:element name="period_number" type="xs:unsignedByte" />
<xs:element name="period_description" type="xs:string" />
<xs:element name="periodcutoff_datetimeGMT" type="xs:string" />
<xs:element name="period_status" type="xs:string" />
<xs:element name="period_update" type="xs:string" />
<xs:element name="spread_maximum" type="xs:unsignedShort" />
<xs:element name="moneyline_maximum" type="xs:unsignedShort" />
<xs:element name="total_maximum" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="moneyline">
<xs:complexType>
<xs:sequence>
<xs:element name="moneyline_visiting" type="xs:short" />
<xs:element name="moneyline_home" type="xs:short" />
<xs:element minOccurs="0" name="moneyline_draw" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="spread">
<xs:complexType>
<xs:sequence>
<xs:element name="spread_visiting" type="xs:decimal" />
<xs:element name="spread_adjust_visiting" type="xs:short" />
<xs:element name="spread_home" type="xs:decimal" />
<xs:element name="spread_adjust_home" type="xs:short" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="total">
<xs:complexType>
<xs:sequence>
<xs:element name="total_points" type="xs:decimal" />
<xs:element name="over_adjust" type="xs:short" />
<xs:element name="under_adjust" type="xs:short" />
</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:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
В ожидании вашего любезного ответа.Также дайте мне знать, если понадобятся некоторые другие детали, чтобы понять сценарий.
Спасибо, Прашант