Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как синхронизировать две базы данных
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию Как синхронизировать две базы данных - 01.09.2006, 17:07

ситуация такая:

есть программа, для работы с БД.. в одном месте она работает с БД, находящейся на MS SQL Server, в другом с БД, находящейся в MS Access. по структуре базы полностью идентичны.. необходимо время от времени новые записи, которые добавляются в MS Access, переносить в MS SQL Server.. базы находятся в разных городах, т.е. необходимо новые записи экспортировать каким-то образом в файл, который потом будет отправляться по e-mail.. посоветуйте, как такое можно сделать?
Ответить с цитированием
  (#2 (permalink)) Старый
SH@DOW SH@DOW вне форума
Member
 
Сообщений: 2,085
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.09.2002
По умолчанию 01.09.2006, 18:46

Формируй скрипт
Ответить с цитированием
  (#3 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 01.09.2006, 18:55

а поподробнее нельзя? какой скрипт? sql-ский? и как его формировать? в базе присутствуют поля с картинками.. как их можно в скрипт запихнуть?
Ответить с цитированием
  (#4 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 01.09.2006, 19:07

а действительно, формировать скрипт очень неплохая идея.. и не очень сложно, и в то же время удобно.. вот только проблема с рисунками все равно остается.. сохранять их отдельно, а потом так же отдельно добавлять в базу будет по-моему не совсем удобно.. может есть какие-нибудь способы как это по-другому сделать?
Ответить с цитированием
  (#5 (permalink)) Старый
ssh ssh вне форума
Member
 
Сообщений: 245
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2004
По умолчанию 01.09.2006, 19:20

Выбрать по фильтру или в sql-запросе добавленные записи из "новой" базы данных в отдельную таблицу, эту таблицу заархивировать, переслать, разархивировать и внести ее записи в "старую" базу. Для обеих операций можно написать в builder'e элементарную программку-редактор таблиц. Или, что менее удобно, огбходиться средствами типа database desktop, bde administrator...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 01.09.2006, 19:29

Цитата:
Выбрать по фильтру или в sql-запросе добавленные записи из "новой" базы данных в отдельную таблицу, эту таблицу заархивировать, переслать, разархивировать и внести ее записи в "старую" базу. Для обеих операций можно написать в builder'e элементарную программку-редактор таблиц. Или, что менее удобно, огбходиться средствами типа database desktop, bde administrator...
такой вариант не очень подходит, так как в базе есть одна главная таблица и несколько подчиненных.. они связаны друг с другом полем id.. и если так делать, записи перепутаются.. это придется еще и все таблицы проверять.. по-моему лучше всего это скрипт.. там можно добавить запись в главную таблицу, узнать ее новый id, вставить его в скрипт для остальных записей в других таблицах и вставить.. вот только проблема с рисунками остается.. наверно придется все-таки их отдельно сохранять и потом для каждой записи вручную добавлять
Ответить с цитированием
  (#7 (permalink)) Старый
ssh ssh вне форума
Member
 
Сообщений: 245
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2004
По умолчанию 02.09.2006, 20:32

А какие особые проблемы могут быть с графическим полем? Ты же должен работать с записями целиком, а не отдельными полями. Не знаю как в MS SQL, но при портировани в Postgres я двоичные поля элеметарно передавал в виде текстовых строк, программно формируя sql-запросы для каждой записи.

Я бы добавил во все таблицы поле типа "дата модификации" и действовал как написано выше. Легко автоматизируется и можно применить ко всем связанным таблицам по очереди. И боже упаси от ручных операций!
Ответить с цитированием
  (#8 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 04.09.2006, 12:05

Цитата:
А какие особые проблемы могут быть с графическим полем? Ты же должен работать с записями целиком, а не отдельными полями. Не знаю как в MS SQL, но при портировани в Postgres я двоичные поля элеметарно передавал в виде текстовых строк, программно формируя sql-запросы для каждой записи.
а можно пример, как записать двоичное поле в виде текстовой строки?

Цитата:
Я бы добавил во все таблицы поле типа "дата модификации" и действовал как написано выше. Легко автоматизируется и можно применить ко всем связанным таблицам по очереди. И боже упаси от ручных операций!
у меня в программе записи просто накапливаются, поэтому можно просто запоминать id последней записи перед портированием
Ответить с цитированием
  (#9 (permalink)) Старый
Gedeon Gedeon вне форума
Member
 
Сообщений: 631
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.06.2003
По умолчанию 04.09.2006, 15:49

Если канал широкий, проще просто перетаскивать всю базу и там где надо переливать тем же МС ДТС например.
Ответить с цитированием
  (#10 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 05.09.2006, 12:30

Цитата:
Если канал широкий, проще просто перетаскивать всю базу и там где надо переливать тем же МС ДТС например.
канал не широкий... ((((

люди! покажите плиз конкретный пример, как двоичное поле из БД перекодировать в hex и как потом с помощью sql-запроса вставить его в базу
Ответить с цитированием
  (#11 (permalink)) Старый
SH@DOW SH@DOW вне форума
Member
 
Сообщений: 2,085
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.09.2002
По умолчанию 05.09.2006, 14:55

В ms sql 2000 есть экспорт данных, и генератор sql скриптов посмотри хелп!
Ответить с цитированием
  (#12 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 05.09.2006, 23:09

А что, в MS SQL нет репликации?
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 06.09.2006, 03:24

Цитата:
А что, в MS SQL нет репликации?
Есть, может пользоваться никто не умеет?
Ответить с цитированием
  (#14 (permalink)) Старый
Виталик Виталик вне форума
Member
 
Сообщений: 333
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2006
По умолчанию 06.09.2006, 11:53

Цитата:
А что, в MS SQL нет репликации?
такой вариант не подходит.. дело в том, что это пока что одна база с аксесом, а другая с sql сервером.. в будущем таких баз с аксесом будет несколько.. да и вообще простой репликацией не получится добиться того, что надо...

суть проблемы более подробно:

есть база в MS SQL SERVER. в ней три таблицы.

первая
id - счетчик
name - строка
photo - image

вторая
id - счетчик
m_id - числовое поле, которое равно значению id из первой таблицы.. таких записей может быть несколько..
cert - строка, в которой хранится название одного из полученных сертификатов для конкретного человека..

третья

тоже самое что и вторая, только вместо названия сертификата указано место работы..


для одного и того же человека может быть указано по несколько записей в второй и третьей таблице. если просто делать репликацию, то значение id в первой таблице измениться (так как везде колличество записей разное), а в поле m_id останется предыдущее.. т.е. запись будет указывать на другого человека.. нужно это вручную контролировать, т.е. добавить одну запись из первой таблицы, запомнить новый id и во всех записях, с предыдущим id поменять его на новый.. как такое можно сделать? наверно самый удачный вариант - формирование sql - скрипта. но тогда можете показать, как можно картинку из фото вставить в sql-скрипт?
Ответить с цитированием
  (#15 (permalink)) Старый
SH@DOW SH@DOW вне форума
Member
 
Сообщений: 2,085
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.09.2002
По умолчанию 06.09.2006, 12:22

Да при генерации скриптов стандартными методами картинки должны тоже быть.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OleDbDataAdapter:Извлечение данных из базы данных imported_Maximys .NET 0 15.07.2011 04:33
Базы данных HASKI Prolog 1 06.04.2011 20:30
БАЗЫ ДАННЫХ prog Prolog 1 05.06.2010 00:05
Базы данных ANUBIS Prolog 1 29.05.2010 19:47
Базы данных ANUBIS Prolog 3 28.05.2010 19:51
Базы данных Tonados Prolog 1 21.11.2007 16:26
Выбор последних данных из базы данных Kryuch Delphi 21 28.05.2006 00:37
Копирование данных из одной базы данных в другую LordMatrix C++ Builder 2 22.05.2006 18:01
Базы данных в Си++ imported_Makoed Visual C++ 5 20.04.2005 10:13
Экспорт данных из базы данных yaro MSSQL Server 1 15.06.2004 20:14
Базы данных на С++ Anonymous Visual C++ 2 03.09.2003 17:01
DLL и базы данных tHiEF! Delphi 0 18.04.2003 09:33



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов