Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Аннотированная XSD-схема для xmlbulkload / 4 сообщений из 4, страница 1 из 1
14.09.2011, 09:31
    #37439377
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотированная XSD-схема для xmlbulkload
Добрый день!

Пишу загрузку стороннего xml в sql2005 с помощью xmlbulkload . Проблема возникла, когда добрался до описания <xs:choice> в схеме. Нашел, что он не совместим с xmlbulkload. Как можно обойти это препятствие? В чем может быть проблема?
Часть xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
<?xml version="1.0" encoding="utf-8"?>
	<feed creationDate="2011-08-26T14:01:03" xmlns="test">
		<f:orders xmlns:f="test">
			<f:order id="10046810" name="6546546546" modifiedDate="2011-08-17T12:42:34" orderType="11" region="1" lDate="2011-08-27T00:00:00">
				<f:adv comp="2155" />
				<f:maket>
					<body xmlns="">
						<p>
							<text>Много текста</text>
						</p>
						<p>
							<text>Много другого текста</text>
						</p>
						<p>
							<text>Еще текст</text>
						</p>
					</body>
				</f:maket>
			</f:order>
			<f:order id="10047517" name="78798765465" modifiedDate="2011-08-19T12:51:48" orderType="11" region="86" lDate="2011-08-27T00:00:00">
				<f:adv comp="2138" />
				<f:maket>
					<body xmlns="">
						<p>
							<text>Текст</text>
						</p>
						<table>
							<rows>
								<row>
									<cells>
										<cell>
											<content>
												<p>
													<text>Текст</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст2</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст3</text>
												</p>
											</content>
										</cell>
									</cells>
								</row>
								<row>
									<cells>
										<cell>
											<content>
												<p>
													<text>Текст4</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст5</text>
												</p>
											</content>
										</cell>
									</cells>
								</row>
							</rows>
						</table>
						<p>
							<text>Текст6</text>
						</p>
					</body>
				</f:maket>
			</f:order>
		</f:orders>
	</feed>

Схема
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:f="test" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
	<xs:annotation>
    	<xs:appinfo>
      		<sql:relationship name="feed_order"
	          parent="feed"
	          parent-key="FeedID"
	          child="C_Orders"
	          child-key="FeedID" />
	        <sql:relationship name="order_adv"
	          parent="C_Orders"
	          parent-key="id"
	          child="c_adv"
	          child-key="id" />
	    </xs:appinfo>
  	</xs:annotation>
	<xs:element name="feed" sql:relation="feed" sql:key-fields="FeedID">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="orders" sql:is-constant="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="order" sql:relation="C_Orders" sql:relationship="feed_order">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="adv" sql:relation="c_adv" sql:relationship="order_adv">
											<xs:complexType>
												<xs:attribute name="comp" type="xs:unsignedInt" use="required" />
											</xs:complexType>
										</xs:element>
										<xs:element name="maket" sql:is-constant="1">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="body" sql:is-constant="1">
														<xs:complexType>
															<xs:sequence>
																	<xs:choice maxOccurs="unbounded">
																	<xs:element maxOccurs="unbounded" name="p" sql:is-constant="1" >
																		<xs:complexType>
																			<xs:sequence minOccurs="0">
																				<xs:element name="text" type="xs:string"  />
																			</xs:sequence>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="table" sql:mapped="false">
																		<xs:complexType>
																			<xs:sequence>
																				<xs:element name="rows">
																					<xs:complexType>
																						<xs:sequence>
																							<xs:element maxOccurs="unbounded" name="row">
																								<xs:complexType>
																									<xs:sequence>
																										<xs:element name="cells">
																											<xs:complexType>
																												<xs:sequence>
																													<xs:element maxOccurs="unbounded" name="cell">
																														<xs:complexType>
																															<xs:sequence>
																																<xs:element name="content">
																																	<xs:complexType>
																																		<xs:sequence>
																																			<xs:element maxOccurs="unbounded" name="p">
																																				<xs:complexType>
																																					<xs:sequence minOccurs="0">
																																						<xs:element name="text" type="xs:string" />
																																					</xs:sequence>
																																				</xs:complexType>
																																			</xs:element>
																																		</xs:sequence>
																																	</xs:complexType>
																																</xs:element>
																															</xs:sequence>
																															<xs:attribute name="colspan" type="xs:unsignedByte" use="optional" />
																															<xs:attribute name="rowspan" type="xs:unsignedByte" use="optional" />
																														</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:choice>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="id" type="xs:unsignedInt" use="required" />
									<xs:attribute name="name" type="xs:string" use="required" />
									<xs:attribute name="modifiedDate" type="xs:date" sql:datatype="datetime" use="required" />
									<xs:attribute name="orderType" type="xs:unsignedInt" use="required" />
									<xs:attribute name="region" type="xs:string" use="required" />
									<xs:attribute name="lDate" type="xs:date" sql:datatype="datetime" use="required" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element><!---->
			</xs:sequence>
			<xs:attribute name="creationDate" type="xs:date" sql:datatype="datetime" use="required" />
		</xs:complexType>
	</xs:element>
</xs:schema>


Таблица, куда осуществляется вставка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [dbo].[C_Orders](
	[FeedID] [int] NOT NULL,
	[id] [int] NOT NULL,
	[name] [nvarchar]( 255 ) NOT NULL,
	[modifiedDate] [datetime] NOT NULL,
	[orderType] [int] NOT NULL,
	[region] [int] NOT NULL,
	[lDate] [datetime] NOT NULL,
	[text] [nvarchar](max) NULL
)
Данные добавляются, кроме как в столбец Text. Туда приходит NULL..
Заранее спасибо!
...
Рейтинг: 0 / 0
14.09.2011, 09:47
    #37439405
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотированная XSD-схема для xmlbulkload
Код: plaintext
1.
2.
3.
4.
5.
<xs:element maxOccurs="unbounded" name="p" sql:is-constant="1" minOccurs="0">
  ..................
</xs:element>
<xs:element name="table" sql:mapped="false" minOccurs="0">
  ..................
</xs:element>
...
Рейтинг: 0 / 0
14.09.2011, 10:41
    #37439484
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотированная XSD-схема для xmlbulkload
_Vasilisk_, добавил в схему, как Вы написали.. но, не помогло..
...
Рейтинг: 0 / 0
14.09.2011, 16:53
    #37440430
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотированная XSD-схема для xmlbulkload
Решил проблему следующим образом. Может, криво и долго, но так работает :)
Первую xsd-схему создал при помощи VS2005, а затем уже руками описывал зависимости между таблицами. Все работало до момента, пока в схеме не встретился <choice>. Пошел другим путем. Загрузил исходный xml-файл в Excel. Он сам создал схему и при импорте отобразил данные, которые мне получить не удалось. Тогда я скачал OfficeExcel2003XMLToolsAddin.exe с сайта MS. Установил в Excel через пакет расширения. Эта утилита позволяет выгружать xsd-схемы в блокнот, созданные Excel автоматически. После этого в полученную схему добавил свои "заметки" и все получилось!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Аннотированная XSD-схема для xmlbulkload / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]