powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вытащить данные из сложной и многоуровневой XML?
25 сообщений из 68, страница 2 из 3
Как вытащить данные из сложной и многоуровневой XML?
    #37756434
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MniorSandalTreeТы местную бюрократию не знаешь. Я что крайний что-ли по инстанциям ходить. Инициатива очень строго наказуема. (по крайней мере, пока проект не горит)Я знаю очень хорошо то что люди очень много болтают подобным образом и при этом ничего , никогда не пробовали сделать.
Но самое прискорбное, что когда в очередной 100500 раз явно показываешь, что все нормально можно "пробить" за 2 секунды, то до мозгов это не доходит. Это диагноз, а не бюрократия.
Да есть случаи, но "обход" очень часто находится.

Как раз когда "не горит" это и делается.

Кста, по запросу "837 XSD" что-то ловиться .
Только сделайте качественный поиск и анализ.

PS: Если бюрократия реально непробиваема (редкий случай). Найдите себе достойную работу. Можете с шефом это осудить. Не холопы же вы. Или нет?Да ладно тебе. Люди болтают...
Сегодня у нас делал презентацию по XQuery бывший сотрудник мелкософта.
Я к нему подкатил со своим вопросом, он сказал что есть 2 варианта:
1. Разбирать XML/XSD ручками, на что потребуется немеряный героизм и куева туча времени и возможно, проведя кост анализ вам этого совсем не захочется делать.
2. Сохранить все данные в XML поле и тянуть оттуда данные по надобности через XQuery. Тут тоже нехилая проблема с написанием всех запросов и прочего... логики будет вагон и маленькая тележка.

Я и так по 12-14 часов в день работаю, я что, лысый что-ли на себя ещё груз брать?
Тут дело даже не в лени или ещё чём-то там, просто не хочу гробить 2 месяца своей драгоценной жизни на какую-то муйню, которая возможно через год поменяется и то что я делал улетит коню под хвост.

ЗЫ Я твою прогу на домашнем компе ещё не тестировал, всё времени нет. Как протестирую отпишусь.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #37756551
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTree , что-то ты через строку читаешь:
MniorКста, по запросу "837 XSD" что-то ловиться .
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #37759320
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mnior SandalTree , что-то ты через строку читаешь:
MniorКста, по запросу "837 XSD" что-то ловиться .И?

Ты открывал эти файлы? Видел что там?

Так вот оно у меня есть.
Как я понял, нужен тупой маппинг между XSD и таблицами в базе, ну и конечно-же куева туча рабочего времени.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #37760519
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeТы открывал эти файлы? Видел что там?Ну XSD. А вы хотели что я всё разжевал как сосунку?
SandalTreeТак вот оно у меня есть .
Как я понял, нужен тупой маппинг между XSD и таблицами в базе , ну и конечно-же куева туча рабочего времени.Акуеть.
Лень не знает ограниений.

Альберт ошибался, вторая бесконечность - это не про вселенную.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #37778523
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MniorSandalTreeТы открывал эти файлы? Видел что там?Ну XSD. А вы хотели что я всё разжевал как сосунку?
SandalTreeТак вот оно у меня есть .
Как я понял, нужен тупой маппинг между XSD и таблицами в базе , ну и конечно-же куева туча рабочего времени.Акуеть.
Лень не знает ограниений.

Альберт ошибался, вторая бесконечность - это не про вселенную.Дело не во времени, а в том что нужно его правильно рассчитывать. Вот вам не лень, вы и парсте вручную 30К строк, а я в это время на Багамах отдохну.

Ценить нужно своё время, а не тупо работать.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #37778960
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeВот вам не лень, вы и парсте вручную 30К строк, а я в это время на Багамах отдохну.1. 30K вы загнули. Там всего-то 100 колонок за день без проблем.
2. Не надо каждую букву парсить глазами, а только замапить. Если система сходится на большую чать то вообще можно одним запросом сделать. Если нет, то двумя.
4. У страха глаза велики
5. Это уже полный песец. Если таких как вы будет 30% - *опа нашему мирку на этой планете.
6. Можете перепоручить это кому-нибуть с не отрицательным терпением. Хоть жене.

Нахлебник.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38026919
wvadik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mnior, пытаюсь грузить XML в базу по методу, описанному Вами в 12410359 .

XML:
Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<getInvoiceReply>
<invoiceID value="279262762"/>
</getInvoiceReply>



XSD:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
   <xsd:element name="getInvoiceReply" sql:relation="dbo.Invoice" sql:key-fields="ID">
      <xsd:complexType>
	 <xsd:sequence>
	      <xsd:element name="invoiceID">
		   <xsd:complexType>
			<xsd:attribute name="value" type="xsd:int" sql:field="invoiceID"/>
		   </xsd:complexType>
	      </xsd:element>
	  </xsd:sequence>
      </xsd:complexType>
  </xsd:element>
</xsd:schema>



Таблица в БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE dbo.Invoice
(
    ID			INT IDENTITY(1,1)	NOT NULL
  , CreateDate	DATETIME		NOT NULL DEFAULT(GETDATE())
  , LastModified	DATETIME		NULL
  , invoiceID	NT			NULL
)

ALTER TABLE dbo.Invoice ADD CONSTRAINT
	PK_Invoice PRIMARY KEY CLUSTERED 
	(ID) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]



Имеем MSSQL2012 + SQLXML 4.0 SP1

Загружаем:
Код: sql
1.
2.
3.
4.
EXEC EData.dbo.spXMLBulkLoad 
    @@File = 'C:\spXMLBulkLoad\test_xml.xml'
  , @@Schema = 'C:\spXMLBulkLoad\test_xsd.xsd'
  , @@DataBase = 'EtranData'



Получаем ошибку:
Код: sql
1.
2.
3.
(1 row(s) affected)
Msg 50000, Level 18, State 1, Procedure spXMLBulkLoad, Line 61
Ошибка при выполнении метода "Execute" в "C:\spXMLBulkLoad\XMLBulkError.xml": Schema: relationship expected on 'invoiceID'. 



В чем может быть проблема?
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028826
wvadik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще вопрос - работает ли SQLXMLBulkLoad на апдейт при попытке сохранения данных с уже существующим ключом?
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028854
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvadik,
а где часть авторXSD with SQL Annotation
из ответа Как вытащить данные из сложной и многоуровневой XML?
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028859
wvadik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в моем сообщении 13427070 XSD сразу указана с sql-аннотацией
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028860
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvadikSQLXMLBulkLoad
А БОЛ самому прочесть слабо ,или обязы Mnior для етого нужен

XML Bulk Load can operate in either a transacted or a nontransacted mode. Performance is usually optimal if you are bulk loading in a nontransacted mode: that is, the Transaction property is set to FALSE) and either of the following conditions is true:

*

The tables into which the data is bulk loaded are empty with no indexes.
*

The tables have data and unique indexes.

The nontransacted approach does not guarantee a rollback if something goes wrong in the bulk load process (although partial rollbacks can happen). The nontransacted bulk load is appropriate when the database is empty. Therefore, if something does go wrong, you can clean the database and start XML Bulk Load again.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028869
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvadikв моем сообщении 13427070 XSD сразу указана с sql-аннотацией
Ответ от Mnior
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
 <xsd:annotation>
  <xsd:appinfo>
   <sql:relationship name="FK_Department_Company" parent="dbo.Company" parent-key="ID" child="dbo.Department" child-key="Company" />
   <sql:relationship name="FK_Person_Department" parent="dbo.Department" parent-key="ID" child="dbo.Person" child-key="Department" />
   <sql:relationship name="FK_Founder_Company" parent="dbo.Company" parent-key="ID" child="dbo.Founder" child-key="Company" />
  </xsd:appinfo>
 </xsd:annotation>


Ваш вариант
Код: sql
1.
 <xsd:element name="getInvoiceReply" sql:relation="dbo.Invoice" sql:key-fields="ID">



помоему все таки разный
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028944
wvadik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaxxwvadikSQLXMLBulkLoad
А БОЛ самому прочесть слабо ,или обязы Mnior для етого нужен

в данном случае речь идет о производительности и транзакциях. у меня стоит задача поставить этот компонент в работу на поток и грузить данные и новый и которые уже существуют в БД, производя полный их апдейт.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028961
wvadik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxxwvadikв моем сообщении 13427070 XSD сразу указана с sql-аннотацией
Ваш вариант
Код: sql
1.
 <xsd:element name="getInvoiceReply" sql:relation="dbo.Invoice" sql:key-fields="ID">



помоему все таки разный
проблема не в установлении связей между несколькими таблицами, а расстановке правильных sql:заметок в xsd аннотации для случаев, когда данные хранятся в единственном атрибуте элементов:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<getInvoiceReply>
   <invoiceID value="123"/>
   <invoiceStateID value="89"/>
   <invoiceState value="Испорчен"/>
   <invLastOper value="27.06.2012 16:08:34"/>
.........
</getInvoiceReply>



Чтобы загрузить как:
invoiceIDinvoiceStateIDinvoiceStateinvLastOper12389Испорчен27.06.2012_16:08:34
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #38028987
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы сие смотрели ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как вытащить данные из сложной и многоуровневой XML?
    #39935758
_kpoIIIka eHoT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемые форумчане.
Не хочется плодить похожие темы, апну старую.
Заранее прошу прощения за возможно глупый вопрос, но только недавно начал изучать SQLXMLBulkLoad как способ импорта XML файлов.
В сообщении 12410359 все подробно описано и замечательно работает, но как быть, если внутри родительского тэга <Records> </Records> появится еще один ребенок <Country> </Country>. Как в этом случае прописать связи sql:relationship между <Company> и <Country>
пример xml
Код: xml
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.
<Records>
	<Company>
	  <Name>ABC</Name>
	  <Department>
		  <Name>Sales</Name>
		  <Person>
		    <Name>Vasja</Name>
		    <Position>Manager</Position>
		  </Person>
		  <Person>
		    <Name>Olga</Name>
		    <Position>Secretutka</Position>
		  </Person>
	  </Department>
	  <Department>
		  <Name>Transportation</Name>
		  <Person>
		    <Name>Petja</Name>
		    <Position>Vodila</Position>
		  </Person>
		  <Person>
		    <Name>Victor</Name>
		    <Position>Bombila</Position>
		  </Person>
	  </Department>
	  <Founders>
	    <Founder>
		    <Name>Kolja</Name>
  	  </Founder>
	    <Founder>
		    <Name>Borja</Name>
  	  </Founder>
	    <Founder>
		    <Name>Misha</Name>
  	  </Founder>
	  </Founders>
	</Company>

<Country>
<Name>Russia</Name>
</Country>

</Records>




По аналогии c примером создаю таблицу Country c колонками Name и Company (CONSTRAINT [FK_Country_Company] REFERENCES dbo.Company (ID))
Код: xml
1.
<sql:relationship name="FK_Country_Company" parent="dbo.Company" parent-key="ID" child="dbo.Country" child-key="Company" />


выдает ошибку "No data was provided for column 'Company' on table 'dbo.Country', and this column cannot contain NULL values."
Помогите пожалуйста советом, уже неприлично долго пытаюсь победить данную проблему.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935794
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хде ж у тя, страдалец, в тоей хамээлине ID?

ЗЫ. А ежели у тя там будет десяток Company и пяток Country. Чаво будем делать?
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935800
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_kpoIIIka eHoT
В сообщении 12410359 все подробно описано и замечательно работает, но как быть, если внутри родительского тэга <Records> </Records> появится еще один ребенок <Country> </Country>. Как в этом случае прописать связи sql:relationship между <Company> и <Country>
У вас же Country добавлен не как ребёнок Company, соответственно, откуда между ними могут быть связи?
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935811
_kpoIIIka eHoT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
Хде ж у тя, страдалец, в тоей хамээлине ID?

В скрипте указываю KeepIdentity = false и при импорте ID сервер генерирует ключ

aleks222
ЗЫ. А ежели у тя там будет десяток Company и пяток Country. Чаво будем делать?

В одном xml файле Company и Country встречаются по одному разу, но при пакетном импорте файлов, их соответственно будет много.
Нужно чтобы они не потерялись.
Сейчас, без учета Country результаты импорта выглядят вот так:

ID Name 1 ABC

ID Name Company 1 Sales 1 2 Transportation 1

ID Name Position Department 1 Vasja Manager 1 2 Olga Secretutka 1 3 Petja Vodila 2 4 Victor Bombila 2

ID Name Company 1 Kolja 1 2 Borja 1 3 Misha 1

А хотелось бы, чтобы еще одна таблица была Country

Name Company Russia 1
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935812
_kpoIIIka eHoT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
_kpoIIIka eHoT
В сообщении 12410359 все подробно описано и замечательно работает, но как быть, если внутри родительского тэга <Records> </Records> появится еще один ребенок <Country> </Country>. Как в этом случае прописать связи sql:relationship между <Company> и <Country>
У вас же Country добавлен не как ребёнок Company, соответственно, откуда между ними могут быть связи?


Возможно я немного путаюсь в определении "Родители-дети", но структура файла именно такая. Совсем нет возможности связать <Company> и <Country> в этом случае ? Пример итоговых таблиц привел выше.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935816
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_kpoIIIka eHoT
alexeyvg
пропущено...
У вас же Country добавлен не как ребёнок Company, соответственно, откуда между ними могут быть связи?


Возможно я немного путаюсь в определении "Родители-дети", но структура файла именно такая. Совсем нет возможности связать <Company> и <Country> в этом случае ? Пример итоговых таблиц привел выше.
Связь <Company> и <Country> должна быть в XML файле.
Конечно, если этой связи нет, то у сервера, или, например, у вас, нет возможности придумать эту связь.

Правильная связь - это дочерняя нода <Country> в ноде <Company>, или атрибут.

Может сделать и неправильную связь (например, <Country> относится ко всем компаниям, описанным в XML-файле, или ещё как то), но не уверен, что SQLXMLBulkLoad-у можно про это сказать.
Придётся это программировать самостоятельно, без SQLXMLBulkLoad.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935829
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Правильная связь - это дочерняя нода <Country> в ноде <Company>, или атрибут.

Ровно моя ситуация, с которой бьюсь уже пару дней.
Идентификатора связи нет, но дочерний объект вложен в родительский.
Парсинг делается в SSIS XML Task, как сделать связь?
Мне нужно "протащить" идентификатор PPL_ID в дочерний элемент LINE (их может быть несколько)
Что-то туплю, но идей нет.

Код: xml
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.
<xs:element type="xs:integer" name="PPL_ID" maxOccurs="1" minOccurs="1">
	<xs:annotation>
		<xs:documentation>ID платежного документа </xs:documentation>
	</xs:annotation>
</xs:element>
...
<xs:element name="LIST_LINES" maxOccurs="1" minOccurs="1">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="LINE" maxOccurs="unbounded" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element type="xs:date" name="PPL_LINE_OPERTIONAL_DAY" maxOccurs="1" minOccurs="1">
							<xs:annotation>
								<xs:documentation>Дата проведения платежа </xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element type="xs:string" name="PPL_LINE_DB_CR" maxOccurs="1" minOccurs="1">  
							<xs:annotation>
								<xs:documentation>Признак Дебет\Кредит проводки </xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element type="xs:decimal" name="PPL_LINE_AMOUNT" maxOccurs="1" minOccurs="1">
							<xs:annotation>
								<xs:documentation>Сумма проводки</xs:documentation>
							</xs:annotation>

...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935900
iliych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обычно в таких сложных случаях вытаскивают данные с помощью искусственного интеллекта.
...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935913
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
alexeyvg
Правильная связь - это дочерняя нода <Country> в ноде <Company>, или атрибут.

Ровно моя ситуация, с которой бьюсь уже пару дней.
Идентификатора связи нет, но дочерний объект вложен в родительский.
Парсинг делается в SSIS XML Task, как сделать связь?
Мне нужно "протащить" идентификатор PPL_ID в дочерний элемент LINE (их может быть несколько)
Что-то туплю, но идей нет.

Если ты не врешь и "дочерний объект вложен в родительский". По твоей схеме этого не скажешь.

У тебя все просто и незатейливо. При вложении - идентификатор скинуть во вложенные ноды - проще пареной репы.
Правда SSIS я не пользуюсь, голый sqlXmlBulkLoad.

Код: xml
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"?>
<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="P"
          parent="[costa2_CostaPortCatalog]"
          parent-key="Market Channel"
          child="[costa2_Ports]"
          child-key="Market Channel" />

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


<xs:attributeGroup name="MarketChannel">
            <xs:attribute name="Market" type="xs:string" use="required" sql:datatype="nvarchar(64)" />
            <xs:attribute name="Channel" type="xs:string" use="required" sql:datatype="nvarchar(64)" />
</xs:attributeGroup>

<xs:attributeGroup name="MarketChannelCurrency">
            <xs:attributeGroup ref="MarketChannel"/>
            <xs:attribute name="Currency" type="xs:string" sql:datatype="nvarchar(3)" />
            <xs:attribute name="Culture" type="xs:string" sql:datatype="nvarchar(64)" />
            <xs:attribute name="ExportAvailability" type="xs:boolean" sql:datatype="bit" />
            <xs:attribute name="Exported" type="xs:date" sql:datatype="date" />
</xs:attributeGroup>


  <xs:element name="CostaPortCatalog" 
                   sql:relation="[costa2_CostaPortCatalog]" 
                   sql:key-fields="Market Channel"
                   sql:overflow-field="OverflowColumn"
  >
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Ports" minOccurs="0" maxOccurs="1" sql:is-constant="1" >
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Port" minOccurs="0" maxOccurs="unbounded"
                   sql:relation="[costa2_Ports]" 
                   sql:key-fields="Market Channel Code"
                   sql:overflow-field="OverflowColumn"
                   sql:relationship="P"
              >
                <xs:complexType>

                  <xs:attributeGroup ref="MarketChannel"/>

                  <xs:attribute name="Code" type="xs:string" sql:datatype="nchar(3)" />
                  <xs:attribute name="Description" type="xs:string" sql:datatype="nvarchar(1024)" />
                  <xs:attribute name="AlternativeDescription" type="xs:string" sql:datatype="nvarchar(1024)" />
                  <xs:attribute name="ShortDescription" type="xs:string" sql:datatype="nvarchar(1024)" />
                  <xs:attribute name="LongDescription" type="xs:string" sql:datatype="nvarchar(4000)" />
                  <xs:attribute name="VeryLongDescription" type="xs:string" sql:datatype="nvarchar(max)" />
                  <xs:attribute name="ImageUrl" type="xs:string" sql:datatype="nvarchar(1024)" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>

      <xs:attributeGroup ref="MarketChannelCurrency"/>

    </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="CostaPortCatalog" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

</xs:schema>

...
Рейтинг: 0 / 0
Как вытащить данные из сложной и многоуровневой XML?
    #39935924
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_kpoIIIka eHoT
alexeyvg
пропущено...
У вас же Country добавлен не как ребёнок Company, соответственно, откуда между ними могут быть связи?


Возможно я немного путаюсь в определении "Родители-дети", но структура файла именно такая. Совсем нет возможности связать <Company> и <Country> в этом случае ? Пример итоговых таблиц привел выше.


Увы, но альтернативно одаренные программизды - это казнь господня.
И этих казней гораздо больше, чем египетской саранчи.
Случай в точности соответствует анекдоту про "чукчу-писателя". Т.е. выгружающий данные не думает "как их будут загружать".

В общем случае, решается костылями "по месту". Степень гнутости костылей не ограничена.

В твоем случае:
1. Грузишь файл с Country и Company независимо, во ВСПОМОГАТЕЛЬНЫЕ пустые таблицы.
2. Копируешь из них в основные, назначив по дороге всем Company единственную Country.
3. Очищаешь ВСПОМОГАТЕЛЬНЫЕ таблицы и повторяешь с п.1
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 2 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вытащить данные из сложной и многоуровневой XML?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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