Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 17:11   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Копирование данных из одной БД в другую

Добрый вечер, необходимо переодически данные из одной бд кидать в другую. Решаю это так: смотрю count в таблицах если в дублирующие меньше то переношу последние добавленные данные, сначала их выбирая, для выбора имею такой скрипт:
Код:
SELECT * FROM SchemeName 
WHERE SchemeID NOT IN (SELECT TOP 8 SchemeID  FROM SchemeName)
Вопрос в том правильно ли я это делаю? как мне точно выбрать последние добавленные данные?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 06.02.2011, 17:51   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Обычно если работа происходит в разных бд записи таблиц которых потом надо синхронизировать, то нужно использовать 2 идентификатора, первый это собственно сам идентификатор, второй это номер филиала.. Если правильно понял то както так, иначе если надо просто сохранить бд на данный момент, лучше так не делать, а именно полностью сохранять бд
vovk вне форума Ответить с цитированием
Старый 06.02.2011, 18:05   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не понятно почему только в первых 8 записях, и как насчет удаленных и измененных записей исходной таблицы? Я бы решал эти вещи оперативно в триггерах таблиц ведущей базы данных, по возможности с использованием координатора распределенных транзакций, естественно если соответствующая база поддерживает эти вещи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.02.2011, 18:13   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не понятно почему только в первых 8 записях, и как насчет удаленных и измененных записей исходной таблицы? Я бы решал эти вещи оперативно в триггерах таблиц ведущей базы данных, по возможности с использованием координатора распределенных транзакций, естественно если соответствующая база поддерживает эти вещи
триггеры обычно работают в пределах одной БД, тут же на лицо как минимум 2
vovk вне форума Ответить с цитированием
Старый 06.02.2011, 18:19   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

это даже разные СУБД и трогать одну из них я никоем образом не могу. не нужно из нее забирать в другую.
Столкнулась с проблемой
Вот структура исходной:
DataPower
DeviceID(pk,fk) smallint not null ссылается на Instrumentation
DateTime(pk) smalldatetime not null
P_In real
P_Out real
Q_In real
Q_Out real
Actual bit not null

Создала подобную таблицу. Создала запрос:
Код:
SELECT * FROM DataPower WHERE DeviceID  NOT IN (SELECT TOP 1 DeviceID  FROM DataPower)
Но работает неверно, пропускает не только первую запись, пропускает все у которых DeviceID равен первому в исходной таблице
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 06.02.2011, 18:21   #6
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

Из первичной ничего удаляться и изменяться не будет, триггеры не вариант. Необходим запрос на выборку последних n добавленных записей. 8 в топе это просто пример
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 06.02.2011, 18:22   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
триггеры обычно работают в пределах одной БД, тут же на лицо как минимум 2
Ничего подобного, MSSQL запросто поддерживает обращение своими средствами к другим SQL серверам (и не только) как через ODBC. так и ADO. При этом совсем необязательно чтобы другие сервера были MSSQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.02.2011, 18:24   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

тогда вопрос простой, определить эти последние записи, если он решается сохранением ID то это одно.
А на самом деле основной вопрос это "что нужно добавлять" то есть первое дело это описание условия по которому отбираются записи для добавления.

Последний раз редактировалось vovk; 06.02.2011 в 18:30.
vovk вне форума Ответить с цитированием
Старый 06.02.2011, 18:27   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ничего подобного, MSSQL запросто поддерживает обращение своими средствами к другим SQL серверам (и не только) как через ODBC. так и ADO. При этом совсем необязательно чтобы другие сервера были MSSQL
если честно то этот вопрос мной плохо изучен, можете привести пример как из тела тригера обращатся к другой СУБД ? Серьёзно это мне очень интерестно.


ой извините за 2 поста подряд, почемуто показалось что сообщение АВАТАРА ниже моего

Последний раз редактировалось vovk; 06.02.2011 в 18:29.
vovk вне форума Ответить с цитированием
Старый 06.02.2011, 18:28   #10
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

есть вариант удалять из второй, а затем не заморачиваться и добавлять все, но этот вариант как-то не очень нравится. Как выбрать последние добавленные записи если первичный ключ составной, нужен просто пример. Давайте не отходить от темы рассуждением про триггеры и прочее.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных из одной книги в другую в разные столбцы. kipish_lp Microsoft Office Excel 15 15.07.2015 07:27
копирование данных из одной базы в другую IB Expert chib_sv SQL, базы данных 0 06.08.2010 09:13
Копирование данных из одной рабочей книги в другую макросом. Andrey3055 Microsoft Office Excel 2 30.10.2009 22:00
Копирование данных из одной таблицы Paradox в другую Zuzya БД в Delphi 3 16.05.2009 19:11
Копирование данных из одной таблицы в другую! фЁдОр БД в Delphi 18 06.01.2008 19:27