Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение 2-х одинаковых таблиц в разных базах  [new]
N_ilyas
Member

Откуда:
Сообщений: 13
Возможно ли сравнить методом запроса 2 одинаковые таблицы из разных баз данных на предмет количества записей и перенести недостающие записи из одной базы в другую ? Базы на одном сервере естессно. Подскажите кто делал, как запрос составлять. Заранее спасибо.
8 мар 08, 11:34    [5388422]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
Taffy
Member

Откуда:
Сообщений: 20510
insert into datebase1..mytable 
select t2.*
from datebase1..mytable t1 full join
       datebase2..mytable t2 on t1.id = t2.id
where t1.id is null
8 мар 08, 11:41    [5388431]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1135
Taffy, в продолжение банкета ... что-то странное творится на SQL SERVER.

Пытаюсь сделать ЭТО для обработки разницы в двух таблицах, которые содержат Image поле (PhotoFull), и в случае несовпадения добавить в новую таблицу запись из старой базы.

insert into dbo.Object_Image(
[RowID]
,[Object_ID]
,[PhotoFull]
)
SELECT 
t1.[RowID]
,t1.[Object_ID]
,t1.[PhotoFull]
from OldServer.OldBase.dbo.Object_Image t1 
left join NewServer.NewDatabase.dbo.Object_Image t2 on t1.RowId = t2.RowID 
where t2.RowID is null


кусок кода select *.... работает FOREVER NEVERENDING STORY!!! - даже если НЕТ НИКАКОЙ РАЗНИЦЫ и возврат должен быть 0 records.... (так и не дождался)
если извлекать только RowId - то select t1.RowId срабатывает МГНОВЕННО, возвращая, ессно, аналогично 0 records.
SELECT 
t1.[RowID]
-- ,t1.[Object_ID]
-- ,t1.[PhotoFull]
from OldServer.OldBase.dbo.Object_Image t1 
left join NewServer.NewDatabase.dbo.Object_Image t2 on t1.RowId = t2.RowID 
where t2.RowID is null
4 май 18, 21:52    [21388696]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
aleks222
Member

Откуда:
Сообщений: 852
Ну и что тут удивительного? Поднимать LOB с диска - это небыстро.

Головой работать надо.

SELECT t1.[RowID] into #RowIds
from OldServer.OldBase.dbo.Object_Image t1 
left join NewServer.NewDatabase.dbo.Object_Image t2 on t1.RowId = t2.RowID 
where t2.RowID is null;

if @@rowcount > 0 begin

alter table #RowIds add primary key (RowID);

insert into dbo.Object_Image(
[RowID]
,[Object_ID]
,[PhotoFull]
)
SELECT 
t1.[RowID]
,t1.[Object_ID]
,t1.[PhotoFull]
from OldServer.OldBase.dbo.Object_Image t1 inner join #RowIds as t2 on t1.RowId = t2.RowID;

end;
5 май 18, 06:46    [21389075]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1135
aleks222,

неплохо работает!

Но вчера проще сделал:

SELECT 
t1.[RowID]
,t1.[Object_ID]
,t1.[PhotoFull]
from OldServer.OldBase.dbo.Object_Image t1 
WHERE t1.[RowID] IN (
SELECT X.[RowID]
from (
SELECT 
t1.[RowID]
,t2.RowID as oldRowID
from OldServer.OldBase.dbo.MyPhotos t1 
left join NewServer.NewDataBase.dbo.MyPhotos t2 on t1.RowId = t2.RowID 
) X
where X.oldRowID is null)
5 май 18, 08:06    [21389124]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1135
упс - поправка (просьба модератору - подправить)
...
from OldServer.OldBase.dbo.Object_Image t1   надо  from OldServer.OldBase.dbo.MyPhotos t1 
...
5 май 18, 08:09    [21389125]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2-х одинаковых таблиц в разных базах  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3462
Alexander2
Taffy, в продолжение банкета ... что-то странное творится на SQL SERVER.
[/src]


нифига себе продолжение банкета 10 летней давности
6 май 18, 17:22    [21391030]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить