Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Объединение двух таблиц из двух разных БД |
Автор: pavelv 14.7.2006, 06:35 |
Есть две разные БД в InterBase: Bd1 и Bd2. Эти две БД абсолютно идентичны по структуре: количество таблиц в одной = количеству таблиц в другой, на каждую таблицу X из БД1 в БД2 найдется точно такая же таблица X и обратно. Я хочу скопировать все данные из БД2 в БД1. Если же первичный ключ в таблице Х из БД1 совпал с первичным ключом таблицы Х из БД2, то данные в БД1 необходимо заменить на новые. Тоесть к примеру: строчка Таблицы Х в БД1: ID NOMER NAME 1 2 Ivanov Строчка Таблицы X в БД2: ID NOMER NAME 1 2 Sidorov по полям ID и Nomer состряпан primary key. В этом случае нужно заменить в БД1: Ivanov на Sidorov. Конечно можно реализовать эту проблему через SQL, используя кучу дополнительных переменных...но думаю есть выходы проще и работающие на порядок быстрее. В общем возникли следующие вопросы, буду благодарен каждому за ответ: 1) Через что лучше всего реализовать эту проблему, для повышения скорости работы приложения. Думаю тут два выходы: SQL или стандартные компоннеты Delphi? Из них я выбрал SQL, а в нем видимо с помощью Update и Insert(Хотя если получу ответ на второй вопрос буду использовать ещё UNION). Может ещё есть решения? 2) Есть ли возможность применить SQL запрос сразу к двум одинаковым таблицам из обоих БД? Я конечно не учитываю методы копирования таблицы из БД2 в БД1 просто под другим именем и далее работу уже в одной БД. |
Автор: dvamaster 14.7.2006, 14:17 | ||||
удалить старые
вставить новые
А если создать новую талицу, удалить старую, и переименовать новую. |
Автор: Mephisto 14.7.2006, 16:58 | ||
Либо я не понял либо ты dvamaster говоришь про таблицы! А с баз удаляеться следующим образом:
|
Автор: pavelv 17.7.2006, 04:53 |
dvamaster удалить старые и вставить новые записи хм...ну собственно для того есть update, смысл делать два запроса когда можно всё одним? Insert конечно понадобиться для всех записей которых не будет. Только ты представь сколько это действий нужно совершить, сначала узнать список все уникальных ID из 2ой базы, сравнить это со списком из 1ой базы. После этого ты узнаешь что нужно Insert-ить что Update-ить и лишь потом выполнить ещё целый пресс sql запросов...этож для каждой записи Update и для каждой Insert...тут уже ничего никому не поможет ![]() Что касается Mephisto, то там приведена конструкция для работы сразу с двумя БД....не видел такой , сейчас гляну что там к чему относится и проверю на работоспособность ![]() |