Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Nuriddin Member Откуда: Узбекистан Сообщений: 10 |
Добрый вечер. Уважаемые гуру прошу помощи в слиянии двух одинаковых таблиц. Точнее эти две таблицы - это одна и та же таблица. Только за разные периоды. Сейчас есть необходимость слить их, причем во второй таблице нумерация ID начинается с 1 (после очистки). Прошу помощи в совете как сделать слияние так что бы при это записи сливались с соблюдением нарастающего ID?. Таблица один заканчивается номером id 80000, таблица два начинается с id 0001. При слиянии сделать так что бы id 0001 добавлялся как 80001 и так далее! |
19 фев 21, 15:22 [22283539] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3971 |
Перед литьём сделать SET IDENTITY INSERT ON и вперёд ткскыть, с нужными идами |
||||
19 фев 21, 15:25 [22283544] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1237 |
Зачем? Шобы жизнь медом не казалась? ЗЫ. Просто вставить - id нагенерится сам собой. |
||||
19 фев 21, 16:01 [22283562] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3971 |
я дал универсальный совет ![]() |
||||||||
19 фев 21, 16:09 [22283570] Ответить | Цитировать Сообщить модератору |
Nuriddin Member Откуда: Узбекистан Сообщений: 10 |
Не ругайте сильно. Я в sql нуб тот ещё. SET IDENTITY INSERT ON select * from gkArcade.gk.GK_TRANSACTS union all select * from gkArcade1.gk.GK_TRANSACTS Что тут не так? меня терзают смутные сомнения что вместо * что то должно стоять!!! |
19 фев 21, 16:22 [22283580] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3971 |
1. Вот то "что-то" должно стоять всегда тккть ![]() 2. Не слушайт мои вредные советы, не используйте SET IDENTITY INSERT ON 3. ну, вот, отпишитесь про результаты |
||||
19 фев 21, 19:40 [22283738] Ответить | Цитировать Сообщить модератору |
Nuriddin Member Откуда: Узбекистан Сообщений: 10 |
SET IDENTITY_INSERT ID ON select * from gkArcade.gk.GK_TRANSACTS union select * from gkArcade_old.gk.GK_TRANSACTS Вот запрос. Но ругается sql не хочет сливать. - До выполнения (Ошибка) Сообщения Ошибка 0xc0202009: Задача потока данных 1: Код ошибки служб SSIS: DTS_E_OLEDBERROR. Возникла ошибка OLE DB. Код ошибки: 0x80040E37. Доступна запись OLE DB. Источник: "Microsoft SQL Server Native Client 11.0" Результат: 0x80040E37 Описание: "Не удалось найти объект "ID", так как он не существует, или отсутствуют разрешения.". (Мастер импорта и экспорта SQL Server) Ошибка 0xc004701a: Задача потока данных 1: Ошибка перед выполнением Источник - Запрос. Код ошибки 0x80040E37. (Мастер импорта и экспорта SQL Server) Данные 0x4004300b: Задача потока данных 1: Назначение - Запрос записал 0 строк. (Мастер импорта и экспорта SQL Server) Вот что пишет. |
20 фев 21, 11:16 [22283977] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8322 |
Nuriddin, причем здесь это "Код ошибки служб SSIS" и слияние таблиц? Используйте SQL запрос для вставки. |
20 фев 21, 16:08 [22284141] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1237 |
Судя по контексту, страдалец не хочет вставлять, он хочет только выборку с "подставленными" ID declare @maxID int = (select max(id) from gkArcade.gk.GK_TRANSACTS); select id , * from gkArcade.gk.GK_TRANSACTS union ALL select id+@maxID as id,* from gkArcade_old.gk.GK_TRANSACTS Сообщение было отредактировано: 20 фев 21, 16:06 |
||||
20 фев 21, 16:12 [22284144] Ответить | Цитировать Сообщить модератору |
Nuriddin Member Откуда: Узбекистан Сообщений: 10 |
Подробности поставленной задачи! Имеется база данных (db_old) с таблицей транзакции (table) за прошлые годы. С 2016 года до начала 2020 года. С 2020 года вся информация по транзакциям записывается в новую таблицу транзакции (table) в базу (db). Последовательность нумерации транзакции (table) в базы (db_old) начинается с 1 и заканчивается на N. Последовательность нумерации транзакции (table) в новой тоже (db) начинается с 1. Задача такая - надо перелить всю информацию по транзакциям с (table) базы (db) в таблицу (table) базы (db_old). При этом надо сделать так что бы новые записи добавлялись начиная с N+1 позиции. Решение которую я нашел. Пытался это все реализовать через sql скрипты. Но не получилось. (Ну sql не мой профиль). Я воспользовался мастером импорта и экспорта SQL server. Указав какую таблицу с какой базы куда надо перелить, далее при выборе какие данные должны быть перелиты я попросту отбросил передачу значении таблицы ID. Что в свою очередь при добавлении генерировала требуемую условия N+1. Все данные с (table)(db) перелиты в (table)(db_old) с соблюдением последовательности ID. Эту мануалку полностью прочел, частично помогло Решение найдено, задача выполнена. Всем спасибо за помощь. |
20 фев 21, 16:29 [22284156] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3971 |
а, вы чисто развеччик? ![]() |
||||
20 фев 21, 21:59 [22284274] Ответить | Цитировать Сообщить модератору |
Nuriddin Member Откуда: Узбекистан Сообщений: 10 |
Ролг Хупин, Не не не, была поставлена задача, искал помощи, решил как то по своему и выложил как решил задачку |
21 фев 21, 08:53 [22284345] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |