Перейти к содержимому

Фотография

Как из трех баз данных найти одинаковые строки и удалить ихв SQL Server (е)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1
Demidova Aigul

Demidova Aigul
  • Свой человек
  • 502 сообщений
Программисты, помогите, пожалуйста, решить проблему! :)
У меня такая проблема: на трех компьютерах установлена база данных "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 г.
  • 0

#2
programmer::Ruslan

programmer::Ruslan
  • Завсегдатай
  • 105 сообщений
не самое лучшее решение:
сделать отдельную базу данных, где хранить неповторяющиеся ключи.
использовать эту базу данных в простой программке, которая будет пробегать по каждой записи в каждой базе данных на отдельных компьютерах,
при встрече новой записи кладет ее в базу,
если повторяющяяся, то удалаять.
ну а потом просто.
  • 0

#3
yedyge

yedyge
  • Свой человек
  • 879 сообщений
я бы с одного лидириующего компа соединился бы с двумя другими и сделал бы циклом селектстрокуоттуда-инсертсюда.

хотя давно это было, я бы ещё по проще и оптимальнее сочинил бы в те времена. например загрузка из файловой таблицы слиянием попробовал бы. точнее там есть визард на перенос данных - он перескакивает строки, которые не могут быть вставлены, кажется.

Сообщение отредактировал yedyge: 26.05.2007, 11:34:05

  • 0

#4
kukushka

kukushka
  • Постоялец
  • 449 сообщений
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))
Не проверял, главное думаю идея понятна.
  • 0

#5
andrey_ddr

andrey_ddr
  • очередь на регистрацию
  • 15 сообщений
Если БД большие (гигабайты), то импортировать сущности в одну БД. Через визард или SQLLoader а потом запросами.
А если маленькие, то написать программулинку маленькую, которая бы и делала

селектстрокуоттуда-инсертсюда




Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.