Программисты, помогите, пожалуйста, решить проблему!
У меня такая проблема: на трех компьютерах установлена база данных "catalog_GC" на SQL Server (е)(название базы везде одинаковое). Таблицы и структура баз данных тоже одинаковая. Разные только строки в таблицах (т.е. содержимое таблиц). Но где-то все-таки есть и одинаковые записи, их нужно найти и удалить.
Может как-то можно это сделать с помощью запроса или курсора или еще как-нибудь?
Одинаковые записи - это в моем случае когда во всех трех базах совпадают записи ключевого поля "InventoryID" в таблице "Referats" (именно поэтому я не могу пока соединить эти 3 базы в одну, пока там совпадают эти поля).
вот, например
id InventoryID Autors ReportName ReportYear
1 19412 Дейнека В. К Окончательный отчет о ... 1968 г.
id InventoryID Autors ReportName ReportYear
1 19412 Дейнека В. К Окончательный отчет о ... 1968 г.
id InventoryID Autors ReportName ReportYear
1 19412 Дейнека В. К Окончательный отчет о ... 1968 г.
Как из трех баз данных найти одинаковые строки и удалить ихв SQL Server (е)
Автор Demidova Aigul, 25.05.2007, 16:57
#2
Отправлено 25.05.2007, 19:20:32
не самое лучшее решение:
сделать отдельную базу данных, где хранить неповторяющиеся ключи.
использовать эту базу данных в простой программке, которая будет пробегать по каждой записи в каждой базе данных на отдельных компьютерах,
при встрече новой записи кладет ее в базу,
если повторяющяяся, то удалаять.
ну а потом просто.
сделать отдельную базу данных, где хранить неповторяющиеся ключи.
использовать эту базу данных в простой программке, которая будет пробегать по каждой записи в каждой базе данных на отдельных компьютерах,
при встрече новой записи кладет ее в базу,
если повторяющяяся, то удалаять.
ну а потом просто.
#3
Отправлено 26.05.2007, 11:33:11
я бы с одного лидириующего компа соединился бы с двумя другими и сделал бы циклом селектстрокуоттуда-инсертсюда.
хотя давно это было, я бы ещё по проще и оптимальнее сочинил бы в те времена. например загрузка из файловой таблицы слиянием попробовал бы. точнее там есть визард на перенос данных - он перескакивает строки, которые не могут быть вставлены, кажется.
хотя давно это было, я бы ещё по проще и оптимальнее сочинил бы в те времена. например загрузка из файловой таблицы слиянием попробовал бы. точнее там есть визард на перенос данных - он перескакивает строки, которые не могут быть вставлены, кажется.
Сообщение отредактировал yedyge: 26.05.2007, 11:34:05
#4
Отправлено 27.05.2007, 11:11:47
Select InventoryID Into catalog_GC_1 from Base1.catalog_GC inner join base2.catalog_GC on Base1.catalog_GC.InventoryID=Base2.catalog_GC.InventoryID select InventoryID into finalTable from base1.catalog_GC_1 inner join base3.catalog_GC on Base1.catalog_GC_1.InventoryID=Base3.catalog_GC.InventoryID delete from base1.catalog_GC where not (InventoryID in (select InventoryID from base1.finaltable)) delete from base2.catalog_GC where not (InventoryID in (select InventoryID from base1.finaltable)) delete from base3.catalog_GC where not (InventoryID in (select InventoryID from base1.finaltable))Не проверял, главное думаю идея понятна.
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0