powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Закачка в базу из XML c помощью XSD
8 сообщений из 8, страница 1 из 1
Закачка в базу из XML c помощью XSD
    #40062787
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Мне нужно сформировать правильный XSD для последующей загрузки в таблицы SQL, поэтому применяю Relation, Relationship и пр. связь "один к одному" отработал, а вот где в XML несколько записей тут что-то запутался и прошу помощи, итак фрагмент XML
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	 <rkn:record> 
            <rkn:org_id>678095</rkn:org_id>
            <rkn:org_name>Наименование</rkn:org_name>
           <rkn:grid>
                <rkn:row>
                     <rkn:region_name_full>Наименование региона_1</rkn:region_name_full>
                     <rkn:region_text>Текст_1</rkn:region_text>
                     <rkn:freq>104,7</rkn:freq>
                     <rkn:power>0,25</rkn:power>
                </rkn:row>
               <rkn:row>
                     <rkn:region_name_full>Наименование региона_2</rkn:region_name_full>
                     <rkn:region_text>Текст_2</rkn:region_text>
                     <rkn:freq>104,7</rkn:freq>
                     <rkn:power>0,25</rkn:power>
                 </rkn:row>
    </rkn:grid>



и схема (фрагмент)

Код: sql
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.
<xs:annotation>  
   <xs:appinfo>  
    <sql:relationship name="Grid"  
          parent="rkn_lv_bulk"  
          parent-key="org_id"  
          child="gridBr"  
          child-key="org_id" />  
   </xs:appinfo>  
 </xs:annotation>

        <xs:element name="record" sql:relation="rkn_lv_bulk" sql:key-fields="org_id">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="org_id" type="xs:unsignedInt" />
              <xs:element name="org_name" type="xs:string" />
              <xs:element name="grid" sql:relation="gridBr" sql:key-fields="org_id"  sql:relationship="Grid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="row" sql:relation="gridBr" sql:key-fields="org_id" sql:relationship="Grid">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="region_name_full" type="xs:string" />
                          <xs:element name="region_text" type="xs:string" />
                          <xs:element name="freq" type="xs:string" />
                          <xs:element name="power" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>




Но при обработке ошибка Schema: the parent/child table of the relationship on 'row' does not match.
Где-то судя по всему небольшой нюанс
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40062831
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
<sql:relationship name="Grid"
parent="rkn_lv_bulk"
child="gridBr"

1<xs:element name="record" sql:relation="rkn_lv_bulk" sql:key-fields="org_id">
     2<xs:element name="grid" sql:relation="gridBr" sql:key-fields="org_id" sql:relationship="Grid">
          3<xs:element maxOccurs="unbounded" name="row" sql:relation="gridBr" sql:key-fields="org_id" sql:relationship="Grid">



Какого хрена "вложенная" таблица 3 имеет "отношение" на два уровня взад к 1?
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40062841
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально было так - без отношений
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<xs:element name="record" sql:relation="rkn_lv_bulk" sql:key-fields="org_id">
<xs:complexType>
<xs:sequence>
<xs:element name="org_id" type="xs:unsignedInt" />
<xs:element name="org_name" type="xs:string" />
<xs:element name="grid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="row">
<xs:complexType>
<xs:sequence>
<xs:element name="region_name_full" type="xs:string" />
<xs:element name="region_text" type="xs:string" />
<xs:element name="freq" type="xs:string" />
<xs:element name="power" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>



Я просто не вкурил как эти отношения построить если связь "один ко многим", что поставить в этих тэгах
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40062856
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
<xs:element name="grid" sql:is-constant="1" >
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40062869
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за подсказку. Скрипт отработал без ошибок, Только он в таблицы ничего не загрузил. На что следует обратить внимание?
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40062938
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Самое тривиальное
Код: sql
1.
2.
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
objBL.BulkLoad       = 1



2. У вас в XML схема указана rkn:, а в XSD - нет. Для загрузчика - это разные вещи rkn:org_id и org_id.
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40063292
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

В итоге загрузку организовал, но получился еще казус, что в XML файле встречаются записи с org_id = NULL, и так как через него организуются отношения в таблицах, то закачка "падает", поэтому вопрос - можно ли в схеме определить какой-нибудь искусственный ID (например номер записи), чтоб потом его прописывать в таблицы для организации связи?
...
Рейтинг: 0 / 0
Закачка в базу из XML c помощью XSD
    #40063408
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968,

этот номер должен быть определен в источнике, иначе вы не и узнаете что и куда попало или должно было попасть.
sql:key-fields="org_id"

Ключ не может отсутствовать в исходных данных.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Закачка в базу из XML c помощью XSD
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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