Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Закачка в базу из XML c помощью XSD / 8 сообщений из 8, страница 1 из 1
15.04.2021, 15:36
    #40062787
patrick1968
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Добрый день.
Мне нужно сформировать правильный 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
15.04.2021, 18:12
    #40062831
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Код: 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
15.04.2021, 18:30
    #40062841
patrick1968
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Изначально было так - без отношений
Код: 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
15.04.2021, 19:14
    #40062856
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Код: sql
1.
<xs:element name="grid" sql:is-constant="1" >
...
Рейтинг: 0 / 0
15.04.2021, 21:11
    #40062869
patrick1968
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Спасибо за подсказку. Скрипт отработал без ошибок, Только он в таблицы ничего не загрузил. На что следует обратить внимание?
...
Рейтинг: 0 / 0
16.04.2021, 05:34
    #40062938
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
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
17.04.2021, 14:05
    #40063292
patrick1968
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закачка в базу из XML c помощью XSD
Добрый день.

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

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

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


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