|
|
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как сделать схему, чтоб при загрузке создались дополнительные поля (PK) и в них понагенерировались значения ключей. Структуру я не хочу создавать вручную, пусть автоматом делается Bulkload-ом. т.е. из xml вида <t1> <f1>"Пупков-задний"</f1> <t2> <f2>"размер противогаза - 4"</f2> </t2> </t1> создалась структура T1(f1,pk) : "Пупков-задний", 1 T2(f2,fk1) : "размер противогаза - 4", 1 //Пытаемся поднять базу налоговой ЕГРЮЛ из XML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 12:06 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
krech... как сделать схему, чтоб при загрузке создались дополнительные поля (PK) и в них понагенерировались значения ключей. ... тынц Модератору: по-моему пора этот вопрос в FAQ помещать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 18:54 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Что же помещать в faq, спрашивается? В Вашем тынц про отношения по сложном ключу, это я уже изучил. А мне нужно чтобы ключ создался сам, так как его нет в данных. Пример: XMLSpy берет да и содает поля с названиями ParentKey и ForeignKey и лупит туда значения, то есть СОЗДАЕТ ключевые поля, да еще и ПИШЕТ туда identities. Может это и не решается, я накопал как это обойти, но уперся в проблему закачки атрибутов из элементов типа sql:is-constant. Может кто знает как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 09:46 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Если использовать namespace xmlns:sql="urn:schemas-microsoft-com:mapping-schema", то схема может выглядеть примерно так: <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" > <xsd:annotation> <xsd:appinfo> <sql:relationship name="t1tot2" parent="t1" parent-key="t1_id" child="t2" child-key="t2_id"/> </xsd:appinfo> </xsd:annotation> <xsd:element name="t1" sql:relation="t1"> <xsd:complexType> <xsd:sequence> <xsd:element name="t1_id" minOccurs="0" sql:identity="ignore"/> <xsd:element name="f1"/> <xsd:element name="t2" sql:relation="t2" sql:relationship="t1tot2" sql:key-fields="t2_id" > <xsd:complexType> <xsd:sequence> <xsd:element name="t2_id" minOccurs="0" sql:identity="ignore"/> <xsd:element name="f2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> При этом автоматически будут генерироваться ключи t1_id и t2_id для дочерней и родительской таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 18:50 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Насчет генерации t2_id с помощью XMLBulkLoad я, пожалуй, погорячилась. Его достаточно сделать identity в таблице. Если структура двух таблиц такая: CREATE TABLE t1 ( t1_id int IDENTITY (1, 1) NOT NULL PRIMARY KEY, f1 varchar(255) ) GO CREATE TABLE t2( t2_id int IDENTITY (1, 1) NOT NULL PRIMARY KEY, t1_id int NOT NULL , f2 varchar(255) ) GO то схему xsd для XMLBulkLoad можно использовать такую: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" > <xsd:annotation> <xsd:appinfo> <sql:relationship name="t1tot2" parent="t1" parent-key="t1_id" child="t2" child-key="t1_id"/> </xsd:appinfo> </xsd:annotation> <xsd:element name="t1" sql:relation="t1" sql:key-fields="t1_id"> <xsd:complexType> <xsd:sequence> <xsd:element name="t1_id" type="xsd:int" sql:identity="ignore"/> <xsd:element name="f1" type="xsd:string"/> <xsd:element name="t2" sql:is-constant="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="f2" type="xsd:string" sql:relation="t2" sql:relationship="t1tot2"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> При этом элемент f2 в xml-данных можно повторять (т.е. делать несколько дочерних записей): <t1> <f1>"Сидоров"</f1> <t2> <f2>"размер противогаза - 1"</f2> <f2>"размер противогаза - 2"</f2> <f2>"размер противогаза - 3"</f2> <f2>"размер противогаза - 4"</f2> </t2> </t1> Но если во второй таблице полей больше, чем одно+ключ, xsd несколько изменится. Впрочем, как и сам xml - придется обрамлять каждую запись внутри t2 в отдельные теги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2006, 12:17 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Спасибо большое. Мне, правда, не подходил вариант с созданием таблиц вручную. И я вышел из положения так: написал прогу, которая все нужные теги прошила уникальным ключом. А потом затянул их балклоадом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:55 |
|
||
|
XML BulkLoad - Генерация ключей
|
|||
|---|---|---|---|
|
#18+
Таблицы можно не создавать вручную, а просто указать SchemaGen = True при закачке данных через объект SQLXMLBulkLoad. При этом они создадутся автоматически на основе xsd. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:53 |
|
||
|
|

start [/forum/topic.php?fid=14&fpage=71&tid=1334670]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 429ms |

| 0 / 0 |
