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

Откуда:
Сообщений: 7
Доброго всем времени суток.
Подскажите плиз, можно ли объединить 2 базы данных для MSQL 2000 построенных на одинаковых таблицах (две базы содержащие разные данные), если да, то как это зделать.
Зараннее всем признателен.
15 июн 09, 19:18    [7302173]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Сначала следует описать, что именно понимается под "объединить" в вашем случае.
15 июн 09, 19:25    [7302204]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Kin328
Member

Откуда:
Сообщений: 7
Есть 1 база в которой данные "х" и вторая база - в которой данные "y" необходимо получить базу с данными "ХY" (структура баз одинакова).
15 июн 09, 19:28    [7302212]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Хорошо. Вам нужен UNION всех данных.

Значит осталось всего лишь описать, что делать в ситуации, когда в таблице уникальный индекс и копирование в неё данных из другой таблицы приведёт к образованию дубликатов по нему.
15 июн 09, 19:31    [7302222]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Kin328
Member

Откуда:
Сообщений: 7
когда встретится в таблице уникальный индекс - ему необходимо присвоить следующий свободный, чтобы не было конфликта... (если это возможно)
15 июн 09, 19:40    [7302244]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
iljy
Guest
Kin328,

если уникальный индекс identity или какой-нибудь NEWID() - тогда просто вставка
insert into BASE1.dbo.TABLE_NAME (список всех столбцов, кроме индекса)
select <опять же список столбцов кроме индекса>
from BASE2.dbo.TABLE_NAME
если таблиц немного и нет дублирующихся данных - пойдет. если индексы не автогенерящиеся - требуется логика их создания. если возможны дубликаты - тогда требуется методика их определения (например - записи с одинаковыми полями, но разными индексами, - являются дублями?). в общем и целом - универсальных методов нет, зависит от вашей конкретной логики слияния.
15 июн 09, 19:58    [7302299]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kin328
когда встретится в таблице уникальный индекс - ему необходимо присвоить следующий свободный, чтобы не было конфликта... (если это возможно)

Т.е. если в обеих базах есть клиент по фамилии Иванов И.И., но с разными id, то их так и останется два в объединенной базе
15 июн 09, 20:02    [7302311]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Kin328
Member

Откуда:
Сообщений: 7
Да пусть бы их было 2, 3... только каждая из баз по 1 гигу, и все столбцы и т.д. не перечесть...
15 июн 09, 20:14    [7302343]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Kin328
когда встретится в таблице уникальный индекс - ему необходимо присвоить следующий свободный, чтобы не было конфликта... (если это возможно)

Это приведёт к забавным каскадным последствиям, если на этот уникальный индекс ссылаются внешние ключи других таблиц (а те, в свою очередь, содержат свои первичные ключи, для которых тоже есть дубликаты в базе X, и дальше рекурсивно вглубь). Удовольствие распутывать эти последствия станет вашим надолго.
15 июн 09, 20:15    [7302346]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Taffy
Member

Откуда:
Сообщений: 20498
то что структура одинаковая - это хорошо, но для объединения мало
как соединять справочники?
если одна и та же сущность есть в обоих базах?
или в таблицах фактов совпадающие значения Идшников, на которые ссылаются другие таблицы фактов...
пару раз приходилось делать слияние баз - муторная ручная работа
15 июн 09, 21:35    [7302537]     Ответить | Цитировать Сообщить модератору
 Re: Объединение б\д MSQL 2000  [new]
Вячеслав Юрьевич
Member

Откуда:
Сообщений: 75
Kin328
Доброго всем времени суток.
Подскажите плиз, можно ли объединить 2 базы данных для MSQL 2000 построенных на одинаковых таблицах (две базы содержащие разные данные), если да, то как это зделать.
Зараннее всем признателен.


А что-бы не попробовать так, если они идентичные:
CREATE VIEW XY
AS
SELECT * FROM base_a.dbo.X
UNION ALL
SELECT * FROM base_b.dbo.X

Лично у меня так работает , но тут еще надо учитывать кол записей в таблицам, я объединяю 4 базы с 500000 записей почти в каждой таблице . В принципе работает относительно быстро
16 июн 09, 11:37    [7304016]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить