Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 загрузка XML продукта сумрачного гения  [new]
aleks222
Member

Откуда:
Сообщений: 851
Как известно, научи дурака богу молиться...

Вот, продукт сумрачного разума. Для тех, кто не въехал:
текст в
<name>
разделен на
<br/>
.
Результат - sqlXmlBulkLoader резонно ругается
xmlBulkLoad.vbs(13, 1) XML SAX Parser: Data mapping to column 'name' was already found in the data. Make sure that no two sche
ma definitions map to the same column.

XML
<cruises>

<cruise id="33430">

<start>02.06.2018</start>

<stop>09.06.2018</stop>

<days>8</days>

<name>
Круиз ЖЕМЧУЖИНЫ ПОЛЕСЬЯ 
<br/>
МОЗЫРЬ-Новоселки-Национальный парк Припятский-Лясковичи-Туров-Стахово-Качановичи-Пинск 2 дня-Дубое-Мотоль-Достоево-Ляховичи-Кобрин-БРЕСТ.
</name>


Схема
        <xs:element name="cruise"
                    sql:relation="[nika_cruises]" 
                    sql:key-fields="id"
        >
          <xs:complexType>
            <xs:sequence>
              <xs:element name="start" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
              <xs:element name="stop" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
              <xs:element name="days" type="xs:string" minOccurs="0" msdata:Ordinal="2" />

              <xs:element name="name" minOccurs="0" maxOccurs="unbounded" type="xs:string" />

<!--
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="br" minOccurs="0" maxOccurs="unbounded" sql:is-constant="1" >
                      <xs:complexType>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
-->


Ну, тривиальный то выход есть - похерить в файле <br/>.

Может у кого есть другие идеи?
2 июн 18, 11:38    [21462884]     Ответить | Цитировать Сообщить модератору
 Re: загрузка XML продукта сумрачного гения  [new]
court
Member

Откуда:
Сообщений: 1956
навсякий, такой запрос, эту траблу "обходит"
declare @xml xml =
'<cruises>
<cruise id="33430">
<start>02.06.2018</start>
<stop>09.06.2018</stop>
<days>8</days>
<name>
Круиз ЖЕМЧУЖИНЫ ПОЛЕСЬЯ 
<br/>
МОЗЫРЬ-Новоселки-Национальный парк Припятский-Лясковичи-Туров-Стахово-Качановичи-Пинск 2 дня-Дубое-Мотоль-Достоево-Ляховичи-Кобрин-БРЕСТ.
</name>
</cruise>
</cruises>'

select 
	t.c.value('.', 'varchar(255)') as xz
from @xml.nodes('cruises/cruise/name') as t(c)

xz
Круиз ЖЕМЧУЖИНЫ ПОЛЕСЬЯ МОЗЫРЬ-Новоселки-Национальный парк Припятский-Лясковичи-Туров-Стахово-Качановичи-Пинск 2 дня-Дубое-Мотоль-Достоево-Ляховичи-Кобрин-БРЕСТ.

понятно, что ты грузишь XmlBulkLoader-ом, но может там можно как-то "настоять" что бы нода name именно так доставалась (?)
2 июн 18, 16:02    [21463168]     Ответить | Цитировать Сообщить модератору
 Re: загрузка XML продукта сумрачного гения  [new]
aleks222
Member

Откуда:
Сообщений: 851
@xml.nodes('cruises/cruise/name') as t(c)

Так я умею.
Нужно потоковым парсером XML загрузить.
3 июн 18, 10:06    [21463861]     Ответить | Цитировать Сообщить модератору
 Re: загрузка XML продукта сумрачного гения  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Нашел вот-здесь. Может поможет.
<xs:element name="name">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>          
  </xs:complexType>
</xs:element>
4 июн 18, 09:28    [21465308]     Ответить | Цитировать Сообщить модератору
 Re: загрузка XML продукта сумрачного гения  [new]
aleks222
Member

Откуда:
Сообщений: 851
              <xs:element name="name" >
                <xs:complexType mixed="true">
                  <xs:sequence>
                    <xs:any namespace="http://www.w3.org/1999/xhtml"
                            processContents="lax"
                            minOccurs="0"
                            maxOccurs="unbounded" />
                    </xs:sequence>          
                  </xs:complexType>
              </xs:element>


Schema mapping: Schema: mixed content is not allowed on element 'name'. Property elements cannot have subelements.
4 июн 18, 12:10    [21466006]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить