|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
Здравствуйте! Представим, что есть таблица на миллион строк . Нужно перенести эти данные в другую таблицу (удалить строки из исходной и передать их в новую). Мы можем передавать только по 10 тыс строк. Джойны и привязка к дате запрещена (примерный вид таблицы предоставил). Столбцы ([date] , [udfname]) - первичные ключи. Пытался через CTE. Создаю временную таблицу. Туда вставляем наш TOP из исходной таблицы. Как вставил эти данные во временную таблицу, то сразу же вызываем delete и убираем этот TOP из первой табл. Код: sql 1. 2. 3. 4. 5. 6.
Но данный способ не работает (работает есть только выбрать insert или delete), т.к. в одном CTE нельзя вызвать несколько DDL команд, ругается на синтаксис запроса. По отдельности TOP мы не можем вызвать, т.к он выбирает рандомные значения и соответственно удалятся данные не из первого CTE. Другой вариант - это добавить новый столбец, который каждый строке даст уникальный идентификатор. Потом я вспомнил, что таблица уже имеет первичные ключи и соответственно эта таблица отсортирована. Могу ли я с чистой душой использовать TOP 10000 без условий для INSERT и потом для DELETE? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 16:34 |
|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 16:41 |
|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
sysn1k в одном CTE нельзя вызвать несколько DDL команд sysn1k Могу ли я с чистой душой использовать TOP 10000 без условий для INSERT и потом для DELETE? можно объединить "приятное с полезным" ) Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 16:43 |
|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
aleks222, да, вариант про deleted забыл написать. Но я думал, что он применяется только для триггеров. Поэтому не стал пробовать. Видимо зря. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 16:47 |
|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
court, Извращение же! Вариант aleks222 получше, правда, я бы цикл выкинул, написал бы просто go 999, ну, или сколько там нужно итераций ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 20:20 |
|
Перенес данных по порциям
|
|||
---|---|---|---|
#18+
Критик, а "into [ в новую]", в цикле, "ниразу" не смущает ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 20:50 |
|
|
start [/forum/topic.php?fid=46&msg=40086509&tid=1684463]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
134ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 487ms |
0 / 0 |