Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
Добрый день всем, вопрос по оптимальному копированию большого поддерева из другого источника. Имеется MSSQL 2005, который на данный момент обновлять никак. Есть таблица Код: sql 1. 2. 3. 4. 5. 6. то есть обычное adjacency list дерево (в данном случае структура изделия) Её нужно наполнить данными, приходящими в виде Код: sql 1. 2. 3. 4. 5. 6. где иерархия строится по StringID - ParentStringID, соответственно нужно транслировать связи из одной таблицы в другую. Хотел сделать временную таблицу для соответствия, но 2005 сервер не умеет в merge, и output из insert ... from тоже. Возможен ли вообще какой-то вариант кроме курсоров в данном случае? По нажатию кнопки юзера будет перекладываться от 100 до 10000 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:15 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
Если в целевую таблицу есть возможность поле добавить - все просто. Либо, если [claimID] [bigint] NOT NULL, [windchillID] [bigint] NOT NULL, однозначно позволяют связать с ChildMaster bigint not null, ParentMaster bigint, тоже можно. Если фсе это "низзя": 1) строим дерево во временной таблице [elementID] [bigint] NOT NULL, [parentElementID] [bigint] NULL, [claimID] [bigint] NOT NULL, [windchillID] [bigint] NOT NULL, [amount] [float] NOT NULL, [modifiedByUser] [bit] NOT NULL, с ПОСЛЕДОВАТЕЛЬНОЙ нумерацией elementID. 2) Блокируем целевую, включаем на ней SET IDENTITY INSERT. 3) Тупо копируем подготовленное дерево в целевую таблицу, прибавив к elementID и parentElementID максимальное значение IDENTITY из целевой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:37 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
aleks222Если в целевую таблицу есть возможность поле добавить - все просто. Либо, если [claimID] [bigint] NOT NULL, [windchillID] [bigint] NOT NULL, однозначно позволяют связать с ChildMaster bigint not null, ParentMaster bigint, тоже можно. Если фсе это "низзя": 1) строим дерево во временной таблице [elementID] [bigint] NOT NULL, [parentElementID] [bigint] NULL, [claimID] [bigint] NOT NULL, [windchillID] [bigint] NOT NULL, [amount] [float] NOT NULL, [modifiedByUser] [bit] NOT NULL, с ПОСЛЕДОВАТЕЛЬНОЙ нумерацией elementID. 2) Блокируем целевую, включаем на ней SET IDENTITY INSERT. 3) Тупо копируем подготовленное дерево в целевую таблицу, прибавив к elementID и parentElementID максимальное значение IDENTITY из целевой. Про добавление поля думал, это можно, первоначально отмёл его как вариант "чёт не оч", но пока в целом за него. Выглядит получше, чем блокировка целевой и курсор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:55 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
alazanskiyВыглядит получше, чем блокировка целевой и курсор. Курсор то тебе нафига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 17:01 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
aleks222alazanskiyВыглядит получше, чем блокировка целевой и курсор. Курсор то тебе нафига? Это я до indentity_insert думал про курсор. Тут то понятно что не нужен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 17:09 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
alazanskiyно 2005 сервер не умеет в merge, и output из insert ... from тоже output из insert ... from 2005-й умеет вполне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 17:13 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловныalazanskiyно 2005 сервер не умеет в merge, и output из insert ... from тоже output из insert ... from 2005-й умеет вполне Умеет, но поля может брать только из inserted, в отличие от update и delete. Я вот совсем забыл это ограничение, из-за чего вопрос и встал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 19:19 |
|
||
|
создание большого поддерева
|
|||
|---|---|---|---|
|
#18+
alazanskiyСон Веры Павловныпропущено... output из insert ... from 2005-й умеет вполне Умеет, но поля может брать только из inserted, в отличие от update и delete. Я вот совсем забыл это ограничение, из-за чего вопрос и встал гугл транслейт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 23:03 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=130&tid=1688928]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 445ms |

| 0 / 0 |
