![]() |
|
![]() ![]() ![]() |
|
pavelv |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Есть две разные БД в 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 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
удалить старые
вставить новые
А если создать новую талицу, удалить старую, и переименовать новую. -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
||||
|
|||||
Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Либо я не понял либо ты dvamaster говоришь про таблицы!
А с баз удаляеться следующим образом:
|
|||
|
||||
pavelv |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
dvamaster удалить старые и вставить новые записи хм...ну собственно для
того есть update, смысл делать два запроса когда можно всё одним? Insert конечно понадобиться для всех записей которых не будет. Только ты представь сколько это действий нужно совершить, сначала узнать список все уникальных ID из 2ой базы, сравнить это со списком из 1ой базы. После этого ты узнаешь что нужно Insert-ить что Update-ить и лишь потом выполнить ещё целый пресс sql запросов...этож для каждой записи Update и для каждой Insert...тут уже ничего никому не поможет ![]() Что касается Mephisto, то там приведена конструкция для работы сразу с двумя БД....не видел такой , сейчас гляну что там к чему относится и проверю на работоспособность ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |