2015-12-01 5 views
0

Обе мои базы данных находятся на одном сервере, DB1 содержит новые и старые данные, DB2 содержит старые данные. DB1 содержит различные таблицы и столбцы, а также те, которые находятся в DB2. Меня беспокоит переписывание старых данных и создание дубликатов. Оба имеют различные первичные/внешние ключи и отношения У меня есть запрос,Перенос данных из одной базы данных в другую DB

update t1 
set description = t2.description 
from db1.dbo.foo t1 
    join db2.dbo.foo t2 
    on t1.itemid = t2.itemid 

То, что я хотел бы сделать, это проверить, если запись уже существует, и если все значения совпадают, чтобы не создать дубликат. Если некоторые значения не соответствуют обновлению записи с самой последней. Могу ли я сделать это, используя уникальный идентификатор?

Благодаря

+0

Вы уверены, что db1 и db2 itemid идентичны? – Chandru

+0

@Chandru, на самом деле я не могу быть уверенным – AndroidAL

ответ

0

Вот что вы можете сделать использовать Exists ключевое слово.

IF NOT EXISTS (SELECT DB1.<column_where_data_is_being_checked> 
      FROM DB1.dbo.table_name DB1 INNER JOIN DB2.dbo.table_Name 
      DB2 ON DB1.<unique_ID> = DB2.<unique_ID> 
      WHERE DB2.<column_where_data_is_being_checked> = 
       SELECT DB1.<column_where_data_is_being_checked> 
       FROM DB1.dbo.table_name DB1) 
UPDATE... 

Это должно работать, вы, возможно, придется изменить запрос внутри существует заявление и построить другую промежуточную таблицу, что вы можете упасть после обновления. Если значение не существует, оно просто продолжит просмотр списка. Этот сайт содержит больше информации об этой концепции https://msdn.microsoft.com/en-us/library/ms188336.aspx

Смежные вопросы