![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запрос на обновление [D7, IB6.x, MSSQL]
pavel_guzhanov © (2005-10-11 13:26:00)Здравствуйте.
Имеется база данных InterBase, IBQuery имеет свойство SQL: Select name from personal.
Имеется база MSSQL Server. В этой базе тоже есть таблица Personal. Мне надо сделать так, чтобы из таблицы Personal базы MSSQL удалились записи, поле name у которых имеет значения, которых нет в таблице Personal базы InterBase.
Подскажите, как это сделать....
Спасибо.
Sergey_Masloff (2005-10-11 17:49:00) [1]Val © (11.10.05 17:38) [10]
Ладно договорились. Я и не собирался фикать, честное слово. Просто сегодня целый день на взводе может форму выбрал не лучшую для возражения. В любом случае если вы расценили мой пост типа "мой вариант - шоколадный ваш г..но" то это оценка ошибочная. Я этого не подразумевал.
Val (2005-10-11 17:38:00) [2]>[8] Sergey_Masloff (11.10.05 17:30)
Вот видите - все дело в "если". А "если" могут быть еще. Поэтому, думаю, мой вариант имеет права на жизнь не менее вашего и фикать его не гут :)
msguns (2005-10-11 17:35:00) [3]Приходилось делать подобное, и не единожды. Комбинации были разные, от парадокс-интербэйз, до мускул-скала. Пришел к выводу, что лучше "пробежки" по исходному со вставкой (запросами) в целевой нету. За исключением ситуаций, когда надо сделать данную процедуру регулярной.
Sergey_Masloff (2005-10-11 17:30:00) [4]Val © (11.10.05 17:10) [7]
>думаете ваш вариант безусловно быстрее? :)
Если таблицы большие - 100% быстрее проверено занусси.
Не знаю как для MSSQL для Oracle я добивался ускорения на 2 порядка. Сам бы не поверил пока не попробовал. Пакетная загрузка работает очень быстро, джойн вообще та операция которую SQL сервера делают лучше всего ;-)
Val (2005-10-11 17:10:00) [5]>[5] Sergey_Masloff (11.10.05 14:07)
думаете ваш вариант безусловно быстрее? :)
pavel_guzhanov (2005-10-11 14:16:00) [6]Спасибо
Sergey_Masloff (2005-10-11 14:07:00) [7]Val © (11.10.05 13:57) [4]
>Бегаем по НД
Да, быстро будет...
pavel_guzhanov © (11.10.05 13:26)
1) Перегоняем интербейзовскую таблицу в MSSQL
2) Делаем закрытый джойн 2 таблиц - "родной" и "интербейзовской"
3) все что не попали в пересечение - грохаем.
Val (2005-10-11 13:57:00) [8]Бегаем по НД. То есть, выбираем все name из MSSQL.Personal, бежим по ним в цикле и делаем запросы к IB.Personal с параметром name. Если ничего не возвращает, то посылаем в базу MSSQL запрос на удаление с этим же параметром.
pavel_guzhanov (2005-10-11 13:35:00) [9]
> то проще убить все и создать те, что есть в IB
Не пройдет, т.к. в MSSQL кроме имени имеются уникальные идентификаторы, которые больше неоткуда взять.
> укажите для начала компоненты доступа
InterBase - IBDatabase и IBQuery
MSSQL - ADOConnection и ADOQuery
Val (2005-10-11 13:32:00) [10]укажите для начала компоненты доступа.
Desdechado (2005-10-11 13:31:00) [11]если таблица ни на что не завязана, то проще убить все и создать те, что есть в IB