Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Всем, кто в курсе, Есть XML файл: <?xml version="1.0" encoding="windows-1251"?> <MOD> <Таблицы> <Таблица1> <ID>00001280000214028</ID> <Столбец1>Периодический</Столбец1> </Таблица1> <Таблица1> <ID>00001280000213524</ID> <Столбец1>Периодический<Периодический ДатаЗнач="25.02.05">5</Периодический> <Периодический ДатаЗнач="02.03.05">5</Периодический> <Периодический ДатаЗнач="11.03.05">5</Периодический> </Столбец1> </Таблица1> <Таблица1> <ID>00001280000214026</ID> <Столбец1>Периодический<Периодический ДатаЗнач="24.02.05">6</Периодический> <Периодический ДатаЗнач="26.02.05">6</Периодический> <Периодический ДатаЗнач="02.03.05">6</Периодический> <Периодический ДатаЗнач="10.03.05">6</Периодический> <Периодический ДатаЗнач="11.03.05">6</Периодический> </Столбец1> </Таблица1> <Таблица1> <ID>00001280000214027</ID> <Столбец1>Периодический<Периодический ДатаЗнач="24.02.05">6</Периодический> <Периодический ДатаЗнач="02.03.05">6</Периодический> <Периодический ДатаЗнач="10.03.05">6</Периодический> <Периодический ДатаЗнач="11.03.05">6</Периодический> </Столбец1> </Таблица1> </Таблицы> </MOD> Данные из него нужно загрузить в 2 таблицы: Tab1 (Id varchar(20)) - родительская таблица и Tab2 (Id varchar(20), val int, dat varchar(10)) - дочерняя таблица, причем одной записи в Tab1 может соответствовать 2 и более записи в Tab2 Для закачки данных при помощи SQL BulkLoad написал схему: <?xml version="1.0" encoding="windows-1251"?> <!--XML-Data generated by XMLSPY v2004 rel. 3 U (http://www.xmlspy.com)--> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:xml:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="MOD" sql:is-constant="1"> <element type="Таблицы"/> </ElementType> <ElementType name="ID" dt:type="i8"/> <ElementType name="Периодический" dt:type="i1"> <AttributeType name="ДатаЗнач" dt:type="enumeration"/> <attribute type="ДатаЗнач" sql:field="dat"/> </ElementType> <ElementType name="Столбец1" sql:relation="Tab2"> <element type="Периодический" sql:field="val"/> </ElementType> <ElementType name="Таблица1" sql:relation="Tab1"> <element type="ID" sql:field="ID"/> <element type="Столбец1"> <sql:relationship key-relation="Tab1" key="ID" foreign-key="ID" foreign-relation="Tab2"/> </element> </ElementType> <ElementType name="Таблицы" sql:is-constant="1"> <element type="Таблица1"/> </ElementType> </Schema> при запуске выдает ошибку на столбец dat. Может что в relationship не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 19:48 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Где код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 11:26 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad.3.0") objBL.ConnectionString ="provider=SQLOLEDB;data source=localhost;database=Database;uid=sa;pwd=" objBL.SchemaGen = True objBL.SGDropTables = True objBL.Execute "e:\XML\11\sch.xml", "e:\XML\11\tab.xml" set objBL=Nothing вот код - тут все в порядке - другие XML без определения связей закачивает запросто, да и в этом примере, если изменитить слегка структуру источника данных (Элемент "Переодический" объявить как атрибут "Столбца1") и соответстветствующим образом изменить схему - загружает нормально - создает обе таблицы и данные корректно сажает. Но мне нужно, чтобы все работало именно по этой структуре ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 13:29 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Что в итоге должно быть в tab2? Я правильно понял, что в поле dat должна быть конкат. строка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 15:21 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Нет, в tab2 первым атрибутом дожен быть идентификатор из tab1 (id) , val-значение элемента "Переодический" (число), dat - значение атрибута "ДатаЗнач" (т.е. обычная дата, но в строковом виде) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 15:59 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Пробовал, не получилось. Я бы преобразовал входной XML в иной формат всё же. С уважением, Мартин Рахманов http://jimmers.russia.webmatrixhosting.net/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2005, 13:27 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
Да, я это понимаю, что дефект во входном XML -файле, но изменить ничего не могу - мне они в таком формате приходят. Нашел временный выход через overflow columns, но тоже жуткое извращение. Может есть какой способ перестраивать входной файл стазу по нормальной схеме, а потом грузить данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2005, 09:17 |
|
||
|
Связать 2 таблицы в схеме для BulkLoad
|
|||
|---|---|---|---|
|
#18+
HenrieМожет есть какой способ перестраивать входной файл стазу по нормальной схеме, а потом грузить данные? Именно это я вам и предложил сделать - преобразовать полученный XML ДО загрузки при помощи XSLT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2005, 09:36 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=33423477&tid=1334928]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 360ms |

| 0 / 0 |
