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

Откуда:
Сообщений: 202
Коллеги, помогите составить аннотированную схему для XML BULK LOAD!
Область для меня совершенно новая, никак не могу разобраться.
Чтение документации ( http://msdn.microsoft.com/ru-ru/library/ms172699(v=sql.110).aspx и далее) - не помогает, работающий пример собрать не могу.
Покажите, как это будет на живом примере!

Вот xml:
<?xml version="1.0"?>
<Root>
	<tbl1>
		<a>1</a>
		<b>1</b>
			<tbl2>
				<c>1</c>
				<d/>
					<tbl3>
					11
					</tbl3>
					<tbl3>
					12
					</tbl3>
					<tbl3>
					13
					</tbl3>
			</tbl2>
			<tbl2>
				<c>2</c>
				<d>2</d>
					<tbl3>
					21
					</tbl3>
					<tbl3>
					22
					</tbl3>
			</tbl2>
	</tbl1>
	<tbl1>
		<a>1</a>
		<b>1</b>
			<tbl2>
				<c>1</c>
				<d/>
					<tbl3>
					11
					</tbl3>
			</tbl2>
			<tbl2>
				<c>4</c>
				<d>4</d>
			</tbl2>
	</tbl1>
</Root>


Вот автосгенерированная VS 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="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="tbl1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="a" type="xs:unsignedByte" />
              <xs:element name="b" type="xs:unsignedByte" />
              <xs:element maxOccurs="unbounded" name="tbl2">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="c" type="xs:unsignedByte" />
                    <xs:element name="d" type="xs:string" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="tbl3" type="xs:unsignedByte" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Вот база:
USE [master]
GO

CREATE DATABASE [example]
GO

USE [example]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl1](
	[a] [tinyint] NOT NULL,
	[b] [tinyint] NOT NULL,
	[tbl1_Id] [int] identity(1,1) NOT NULL,
 CONSTRAINT [PK_tbl1] PRIMARY KEY CLUSTERED 
(
	[tbl1_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl2](
	[c] [tinyint] NOT NULL,
	[d] nvarchar(max) NULL,
	[tbl2_Id] [int] identity(1,1) NOT NULL,
	[tbl1_Id] [int] NULL,
 CONSTRAINT [PK_tbl2] PRIMARY KEY CLUSTERED 
(
	[tbl2_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl3](
	[tbl3] [tinyint] NULL,
	[tbl2_Id] [int] NULL
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[tbl2]  WITH CHECK ADD  CONSTRAINT [tbl1_tbl2] FOREIGN KEY([tbl1_Id])
REFERENCES [dbo].[tbl1] ([tbl1_Id])
GO
ALTER TABLE [dbo].[tbl2] CHECK CONSTRAINT [tbl1_tbl2]
GO
ALTER TABLE [dbo].[tbl3]  WITH CHECK ADD  CONSTRAINT [tbl2_tbl3] FOREIGN KEY([tbl2_Id])
REFERENCES [dbo].[tbl2] ([tbl2_Id])
GO
ALTER TABLE [dbo].[tbl3] CHECK CONSTRAINT [tbl2_tbl3]
GO
USE [master]
GO
ALTER DATABASE [example] SET  READ_WRITE 
GO


Грузить собираюсь так: (код на VB.NET)
    Sub Main()
        Try
            Dim objBL As New SQLXMLBULKLOADLib.SQLXMLBulkLoad4()
            objBL.ConnectionString = "Provider=sqloledb;server=s01;database=example;integrated security=SSPI"
            objBL.ErrorLogFile = "c:\tmp\error.xml"
            objBL.KeepIdentity = False
            objBL.Execute("example.xsd", "example.xml")
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    End Sub


Не взлетает, хоть ты тресни!

Обратите внимание - в XML нет идентификаторов! А примеры только с идентификаторами попадаются.

Помогите разобраться, третий день бьюсь.
14 июл 17, 13:46    [20644326]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
Да, забыл сказать, интересно только SQLXMLBULKLOAD.
Потому что по другому я умею - раз, и грузить придётся большие (~20-30 Гб) файлы - два.
14 июл 17, 13:47    [20644330]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
aleks2
Guest
Начни с малого...
<?xml version="1.0" encoding="utf-8"?>
<getCountriesResult version="1.0">
  <country id="7" name="США" />
  <country id="10" name="Кипр" />
  <country id="15" name="Чехия" />
  <country id="26" name="Австралия" />
  <country id="123456880" name="Коста Рика" />
</getCountriesResult>

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
           xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
>
  <xs:annotation>
   <xs:appinfo>

    <sql:relationship name="CN"
          parent="[JetTravel_get]"
          parent-key="version"
          child="[JetTravel_Country]"
          child-key="version" />

   </xs:appinfo>
  </xs:annotation>

  <xs:element name="getCountriesResult" 
              sql:relation="[JetTravel_get]" 
              sql:key-fields="getWhat version"
              sql:overflow-field="OverflowColumn"
  >
    <xs:complexType>
      <xs:sequence>
        <xs:element name="country" minOccurs="0" maxOccurs="unbounded"
                    sql:relation="[JetTravel_Country]" 
                    sql:key-fields="id"
                    sql:relationship="CN"
                    sql:overflow-field="OverflowColumn"
        >
          <xs:complexType>
      
            <xs:attribute name="version" type="xs:string" sql:datatype="nvarchar(24)" use="required" />

            <xs:attribute name="id" type="xs:int" />
            <xs:attribute name="name" type="xs:string" sql:datatype="nvarchar(512)" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>

      <xs:attribute name="getWhat" type="xs:string" sql:datatype="nvarchar(24)" default="getCountriesResult" />
      <xs:attribute name="version" type="xs:string" sql:datatype="nvarchar(24)" />

    </xs:complexType>
  </xs:element>

  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="getCountriesResult" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
14 июл 17, 16:34    [20645357]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
aleks2
Начни с малого...

Ну, воспроизвести пример из MSDN я могу.
И, как мне кажется, даже понимаю его.

Я не понимаю, что делать, если надо генерировать ID для связи между таблицами.

Вот и Вы тоже нашли пример с идентификатором:
<?xml version="1.0" encoding="utf-8"?>
<getCountriesResult version="1.0">
<country id="7" name="США" />
<country id="10" name="Кипр" />
<country id="15" name="Чехия" />
<country id="26" name="Австралия" />
<country id="123456880" name="Коста Рика" />
</getCountriesResult>
14 июл 17, 16:57    [20645501]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
Упс. Вот это что-то новое. Я либо плохо читал, либо читал не то.
Попробую вкурить.
      <xs:attribute name="getWhat" type="xs:string" sql:datatype="nvarchar(24)" default="getCountriesResult" />
      <xs:attribute name="version" type="xs:string" sql:datatype="nvarchar(24)" />

    </xs:complexType>
  </xs:element>

  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="getCountriesResult" />
      </xs:choice>
    </xs:complexType>
  </xs:element>


Спасибо.
14 июл 17, 17:01    [20645516]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
iii2,
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xs:annotation>
    <xs:appinfo>
      <sql:relationship name="rel_1" parent="tbl1" parent-key="tbl1_Id" child="tbl2" child-key="tbl1_Id" />
      <sql:relationship name="rel_2" parent="tbl2" parent-key="tbl2_Id" child="tbl3" child-key="tbl2_Id" />
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="Root" sql:is-constant="1">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="tbl1" sql:relation="tbl1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="a" type="xs:string" sql:field="a" />
              <xs:element name="b" type="xs:string" sql:field="b" />
              <xs:element name="tbl2" sql:relation="tbl2" sql:relationship="rel_1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="c" type="xs:string" sql:field="c" />
                    <xs:element name="d" type="xs:string" sql:field="d" />
                    <xs:element name="tbl3" sql:relation="tbl3" sql:relationship="rel_2" sql:field="tbl3" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
14 июл 17, 17:24    [20645587]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
aleks2
Guest
[quot iii2]
aleks2
Начни с малого...

Ну, воспроизвести пример из MSDN я могу.
И, как мне кажется, даже понимаю его.

Глупенький, это пример из жизни, не из MSDN.

На, позаковырыстей. Тока гляди шоб крышу не снесло.
+

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
            xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
            xmlns:NS1="urn:webservice-electrasoft-ru:types-twsReservationServiceIntf-ItwsReservationService"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
            targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
            elementFormDefault="qualified"
>
<xsd:import schemaLocation="ItwsReservationService3.xsd" namespace="urn:webservice-electrasoft-ru:types-twsReservationServiceIntf-ItwsReservationService" />

  <xsd:annotation>
   <xsd:appinfo>

    <sql:relationship name="BRAT"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_ReservationAbodeTable]"
          child-key="bodyID" />

    <sql:relationship name="BRATO"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_Offer]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATOV"
          parent="[alean_ReservationAbodeTable_Offer]"
          parent-key="SearchToken TourID RoomCategoryID RoomPlacingID PacketID HotelOptionID"
          child="[alean_ReservationAbodeTable_Offer_Visit]"
          child-key="SearchToken TourID RoomCategoryID RoomPlacingID PacketID HotelOptionID" />

    <sql:relationship name="BRATT"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_Tour]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATH"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_Hotel]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATTT"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_TouristType]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATS"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_Service]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATHO"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_HotelOption]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATRC"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_RoomCategory]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATP"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_Packet]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATPS"
          parent="[alean_ReservationAbodeTable_Packet]"
          parent-key="SearchToken PacketID"
          child="[alean_ReservationAbodeTable_Packet_Service]"
          child-key="SearchToken PacketID" />

    <sql:relationship name="BRATRP"
          parent="[alean_ReservationAbodeTable]"
          parent-key="bodyID SearchToken"
          child="[alean_ReservationAbodeTable_RoomPlacing]"
          child-key="bodyID SearchToken" />

    <sql:relationship name="BRATRTP"
          parent="[alean_ReservationAbodeTable_RoomPlacing]"
          parent-key="SearchToken RoomPlacingID"
          child="[alean_ReservationAbodeTable_RoomPlacing_RoomTouristPlacing]"
          child-key="SearchToken RoomPlacingID" />

    <sql:relationship name="HD"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_HotelDescriptions]"
          child-key="bodyID" />

    <sql:relationship name="BHL"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_hotels]"
          child-key="bodyID" />

    <sql:relationship name="BHC"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_hotels_changed]"
          child-key="bodyID" />

    <sql:relationship name="BP"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_prices]"
          child-key="bodyID" />

    <sql:relationship name="BPT"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceTour]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPRc"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceRoomCategory]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPTt"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceTouristType]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPAp"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceAbodePacket]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPRp"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceRoomPlacing]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPRtp"
          parent="[alean_priceRoomPlacing]"
          parent-key="bodyID hotelID RoomPlacingID"
          child="[alean_priceRoomTouristPlacing]"
          child-key="bodyID hotelID RoomPlacingID" />

    <sql:relationship name="BPL"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceLists]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPS"
          parent="[alean_prices]"
          parent-key="bodyID hotelID"
          child="[alean_priceServices]"
          child-key="bodyID hotelID" />

    <sql:relationship name="BPLL"
          parent="[alean_priceLists]"
          parent-key="bodyID hotelID Name"
          child="[alean_priceListLines]"
          child-key="bodyID hotelID Name" />

    <sql:relationship name="BPLLP"
          parent="[alean_priceListLines]"
          parent-key="bodyID hotelID Name RoomCategoryID PlaceKind RoomPlacingID TourID AbodePacketID TouristTypeID"
          child="[alean_pricePrices]"
          child-key="bodyID hotelID Name RoomCategoryID PlaceKind RoomPlacingID TourID AbodePacketID TouristTypeID" />

    <sql:relationship name="BPLLSp"
          parent="[alean_priceListLines]"
          parent-key="bodyID hotelID Name RoomCategoryID PlaceKind RoomPlacingID TourID AbodePacketID TouristTypeID"
          child="[alean_priceServicePrices]"
          child-key="bodyID hotelID Name RoomCategoryID PlaceKind RoomPlacingID TourID AbodePacketID TouristTypeID" />

   <sql:relationship name="BPLRcp"
          parent="[alean_priceLists]"
          parent-key="bodyID hotelID Name"
          child="[alean_priceRoomCategorysPlace]"
          child-key="bodyID hotelID Name" />

   <sql:relationship name="BPLRcpAp"
          parent="[alean_priceRoomCategorysPlace]"
          parent-key="bodyID hotelID Name RoomCategoryID RoomPlacingID"
          child="[alean_priceRoomCategorysPlaceAvailPeriod]"
          child-key="bodyID hotelID Name RoomCategoryID RoomPlacingID" />

    <sql:relationship name="BF"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_fault]"
          child-key="bodyID" />

    <sql:relationship name="BHD"
          parent="[alean_body]"
          parent-key="bodyID"
          child="[alean_descrs]"
          child-key="bodyID" />

    <sql:relationship name="DT"
          parent="[alean_descrs]"
          parent-key="bodyID hotelID"
          child="[alean_descr_Tours]"
          child-key="bodyID hotelID" />

    <sql:relationship name="DHG"
          parent="[alean_descrs]"
          parent-key="bodyID hotelID"
          child="[alean_descr_HotelGroups]"
          child-key="bodyID hotelID" />

    <sql:relationship name="DRC"
          parent="[alean_descrs]"
          parent-key="bodyID hotelID"
          child="[alean_descr_RoomCategories]"
          child-key="bodyID hotelID" />
   </xsd:appinfo>
  </xsd:annotation>

  <xsd:element name="Envelope" sql:is-constant="1">
    <xsd:complexType>
      <xsd:sequence>
         <xsd:element name="Body" minOccurs="1" maxOccurs="1" 
                   sql:relation="[alean_body]" 
                   sql:key-fields="dummy bodyID"
                   sql:overflow-field="OverflowColumn"
        >
          <xsd:complexType>
            <xsd:sequence>

              <xsd:element ref="NS1:GetAvailableHotelListResponse"      minOccurs="0" maxOccurs="1"/>
              <xsd:element ref="NS1:GetHotelDescriptionChangesResponse" minOccurs="0" maxOccurs="1"/>
              <xsd:element ref="NS1:GetHotelDetailListResponse"         minOccurs="0" maxOccurs="1"/>
              <xsd:element ref="NS1:GetHotelDailyPriceListResponse"     minOccurs="0" maxOccurs="1"/>
              <xsd:element ref="NS1:GetHotelDescriptionResponse"        minOccurs="0" maxOccurs="1"/>
              <xsd:element ref="NS1:GetAbodeReservationTableResponse"   minOccurs="0" maxOccurs="1" />

              <xsd:element name="Fault" minOccurs="0" maxOccurs="1"
                          sql:relation="[alean_fault]"
                          sql:key-fields="faultID faultcode faultstring"
                          sql:relationship="BF"
                          sql:overflow-field="OverflowColumn"
              >
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="faultcode"   form="unqualified" type="xsd:string" sql:datatype="nvarchar(64)"/>
                    <xsd:element name="faultstring" form="unqualified" type="xsd:string" sql:datatype="nvarchar(128)"/>
                    <xsd:element name="faultactor"  form="unqualified" type="xsd:string" sql:datatype="nvarchar(24)"/>
                  </xsd:sequence>
                  <xsd:attribute name="bodyID" type="xsd:int" default="-1" />
                  <xsd:attribute name="faultID" type="xsd:int" default="-1" />
                </xsd:complexType>
              </xsd:element>

            </xsd:sequence>

            <xsd:attribute name="bodyID" type="xsd:int" default="-1" />
            <xsd:attribute name="dummy"  type="xsd:int" default="0" />

            <!-- xsd:attribute name="SOAP-ENC:encodingStyle" msdata:Prefix="SOAP-ENC" type="xsd:string" / -->

            <xsd:anyAttribute processContents="skip"/>

          </xsd:complexType>

        </xsd:element>
       </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

14 июл 17, 17:42    [20645633]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
aleks2
Guest
ЗЫ. Строители разных xml - API никогда не думают на тему: "как ЭТО грузить в базу?"
14 июл 17, 17:47    [20645644]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
felix_ff, а где в схеме присутствует генерацию id шников?
14 июл 17, 17:52    [20645662]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
aleks2, блин, вообще глаза в кучу.
Вроде бы в xsd:annotation перечислена куча связей, а в самой схеме соответствующих таблиц нету.
Это почиканый кусочек?
Я в ступоре.
14 июл 17, 17:58    [20645684]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
felix_ff, большое спасибо!
Пример загрузился и ожидаемым образом.

Получается, что каким либо образом прописывать в схеме, в <xs:sequence> поля, которые станут синтетическими ID - не нужно?
Интересно, а если там не identity, а NEWSEQUENTIALID(), или NEXT VALUE FOR SEQUENCE - также сработает?
Просто теоретический интерес.

Сейчас попробую на тестовой базе боевой xml!
14 июл 17, 18:13    [20645717]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
aleks2
Guest
iii2
aleks2, блин, вообще глаза в кучу.
Вроде бы в xsd:annotation перечислена куча связей, а в самой схеме соответствующих таблиц нету.
Это почиканый кусочек?
Я в ступоре.


Там же ссылочка есть на вложенный .xsd... а во вложенном ишо три ссылочки на вложенные схемы.
Грузить сложносочиненные xml - геморрой невероятного масштаба.

+

    <xsd:schema xmlns="urn:webservice-electrasoft-ru:types-twsReservationServiceIntf-ItwsReservationService" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
               xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
               xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
               xmlns:hl="urn:schemas-som-ru:tws-reservationHotelDetailList"
               xmlns:pl="urn:schemas-som-ru:tws-reservationHotelDailyPricelist"
               xmlns:rt="urn:schemas-som-ru:tws-reservationAbodeTable"

               targetNamespace="urn:webservice-electrasoft-ru:types-twsReservationServiceIntf-ItwsReservationService"
               elementFormDefault="unqualified"
    >

    <xsd:import schemaLocation="Hotel.xsd" namespace="urn:schemas-som-ru:tws-reservationHotelDetailList" />
    <xsd:import schemaLocation="Price.xsd" namespace="urn:schemas-som-ru:tws-reservationHotelDailyPricelist" />
    <xsd:import schemaLocation="ReservationAbodeTable.xsd" namespace="urn:schemas-som-ru:tws-reservationAbodeTable" />


              <xsd:element name="GetHotelDescriptionResponse" sql:is-constant="1">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="return" form="unqualified" minOccurs="1" maxOccurs="1" 
                                 sql:relation="[alean_HotelDescriptions]" 
                                 sql:relationship="HD"
                                 sql:overflow-field="OverflowColumn"
                                 sql:datatype="nvarchar(max)" sql:field="hotelDescr"              
                    >
                          <xsd:complexType>
                           <xsd:simpleContent>
                            <xsd:extension base="xsd:string" >
                              <xsd:attribute name="bodyID" type="xsd:int" default="-1" />
                            </xsd:extension>
                           </xsd:simpleContent>
                          </xsd:complexType>
                    </xsd:element>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>

              <xsd:element name="GetHotelDescriptionChangesResponse" sql:is-constant="1">
                <xsd:complexType>
                  <xsd:sequence>

                     <xsd:element name="return" sql:is-constant="1" minOccurs="0" maxOccurs="1">
                      <xsd:complexType>
                        <xsd:sequence>

                         <xsd:element name="item" 
                                      sql:relation="[alean_hotels_changed]" 
                                      sql:relationship="BHC"
                                      sql:key-fields="hotelID"
                                      sql:overflow-field="OverflowColumn"
                                      minOccurs="0" maxOccurs="unbounded" sql:datatype="nvarchar(24)" sql:field="hotelID"
                         >
                          <xsd:complexType>
                           <xsd:simpleContent>
                            <xsd:extension base="xsd:string" >
                              <xsd:attribute name="bodyID" type="xsd:int" default="-1" />
                            </xsd:extension>
                           </xsd:simpleContent>
                          </xsd:complexType>
                         </xsd:element>

                        </xsd:sequence>

                        <xsd:anyAttribute processContents="skip"/>

                      </xsd:complexType>
                     </xsd:element>


                  </xsd:sequence>

                  <xsd:anyAttribute processContents="skip"/>

                </xsd:complexType>
              </xsd:element>

              <xsd:element name="GetAvailableHotelListResponse" sql:is-constant="1">
                <xsd:complexType>
                  <xsd:sequence>

                     <xsd:element name="return" sql:is-constant="1" minOccurs="0" maxOccurs="1">
                      <xsd:complexType>
                        <xsd:sequence>

                         <xsd:element name="item" 
                                      sql:relation="[alean_hotels]" 
                                      sql:relationship="BHL"
                                      sql:key-fields="hotelID"
                                      sql:overflow-field="OverflowColumn"
                                      minOccurs="0" maxOccurs="unbounded" sql:datatype="nvarchar(24)" sql:field="hotelID"
                         >
                          <xsd:complexType>
                           <xsd:simpleContent>
                            <xsd:extension base="xsd:string" >
                              <xsd:attribute name="bodyID" type="xsd:int" default="-1" />
                            </xsd:extension>
                           </xsd:simpleContent>
                          </xsd:complexType>
                         </xsd:element>

                        </xsd:sequence>

                        <xsd:anyAttribute processContents="skip"/>

                      </xsd:complexType>
                     </xsd:element>


                  </xsd:sequence>

                  <xsd:anyAttribute processContents="skip"/>

                </xsd:complexType>
              </xsd:element>

              <xsd:element name="GetHotelDetailListResponse" sql:is-constant="1">
                <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="return" form="unqualified" sql:is-constant="1" minOccurs="0" maxOccurs="1">
                      <xsd:complexType>
                        <xsd:sequence>
                          <xsd:element name="HotelList" form="unqualified" sql:is-constant="1" >
                           <xsd:complexType>
                            <xsd:sequence>
                              <xsd:element ref="hl:Hotel" minOccurs="0" maxOccurs="unbounded"/>
                            </xsd:sequence>
                           </xsd:complexType>
                          </xsd:element>
                        </xsd:sequence>
                        <xsd:anyAttribute processContents="skip"/>
                      </xsd:complexType>
                     </xsd:element>
                  </xsd:sequence>
                  <xsd:anyAttribute processContents="skip"/>
                </xsd:complexType>
              </xsd:element>


              <xsd:element name="GetHotelDailyPriceListResponse" sql:is-constant="1">
                <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="return" form="unqualified" sql:is-constant="1" minOccurs="0" maxOccurs="1">
                      <xsd:complexType>
                        <xsd:sequence>
                          <xsd:element name="HotelsDailyPricelist" form="unqualified" sql:is-constant="1" >
                           <xsd:complexType>
                            <xsd:sequence>
                               <xsd:element ref="pl:HotelPricelist" minOccurs="0" maxOccurs="unbounded" />
                            </xsd:sequence>
                           </xsd:complexType>
                          </xsd:element>
                        </xsd:sequence>
                        <xsd:anyAttribute processContents="skip"/>
                      </xsd:complexType>
                     </xsd:element>
                  </xsd:sequence>
                  <xsd:anyAttribute processContents="skip"/>
                </xsd:complexType>
              </xsd:element>

  <xsd:element name="GetAbodeReservationTableResponse" sql:is-constant="1">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="return" form="unqualified" sql:is-constant="1" minOccurs="0" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element ref="rt:ReservationAbodeTable" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>


    </xsd:schema>
<!--
-->
14 июл 17, 18:16    [20645726]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
iii2
Member

Откуда:
Сообщений: 202
aleks2, спасибо.
Неприличными словами выражаться не буду. Но это какой то #%%:?*№й #$%^&ц, прости господи.
Пойду курить.

Еще раз спасибо.

Еще один вопрос, если можно.
В процессе загрузки (он еще идет, вроде чего то грузится, но грузится ли правильно - не могу сказать), оно создало массу таблиц такого вида:
[dbo].[__SQLXMLBulkload_141529205582_]
Это потому что я столбцы переполнения не определил?
А как они должны выглядеть? Как xml столбец в таблице?
14 июл 17, 18:38    [20645776]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить аннотированную схему для SQLXMLBULKLOAD 4.0  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
iii2,

Вам ни что не мешает схему таблицы переделать и посмотреть что будет :)
14 июл 17, 18:45    [20645790]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить