Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как написать прогу синхронизации бд Axcess и Oracle  (Прочитано 20023 раз)
0 Пользователей и 1 Гость смотрят эту тему.
IrBiSSSSSS
Гость
« : 24-05-2009 09:08 » 

На главном компе стоит субд Oracle, на мобильных терминалах - базы Excess. Необходимо написать прогу, которая позволяла бы синхронизировать эти базы, т.е. в Oracle вносить все изменения из аксесовских бд. Синхронизация будет производится на том же компе, где стоит Oracle. Возможно ли это вообще реализовать? И если да, то как? Заранее, спасибо
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 24-05-2009 19:15 » 

IrBiSSSSSS, напиши программу, которая бы через ADO открывала mdf-базы Access, доставала из них данные и заносила в Oracle. В чем загвоздка?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
IrBiSSSSSS
Гость
« Ответ #2 : 25-05-2009 06:49 » 

косяк в том, что с бд я раньше не работал! имею только общие представления. допустим, Адотэйбл считывает все инфу из аксессовской бд... далее необходимо осуществлять проверку на наличие в Оракл инфы и аксесс. если в аксесс есть более новые записи-проводить обновление. каким образом это можно контроллировать? вводить в аксесс сущность с датой и ее сверять?
Записан
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #3 : 25-05-2009 07:05 » 

IrBiSSSSSS, допустим сверять по Id. Пока ты более конкретнее нам не покажешь картину, мы тебе будем давать общие/размытые ответы.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
IrBiSSSSSS
Гость
« Ответ #4 : 25-05-2009 17:05 » 

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

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 25-05-2009 17:13 » 

IrBiSSSSSS, какие такие другие механизмы тебе известны? В IT волшебных палочек не бывает. SQL-запросы - стандартный способ общения с СУБД. ADO - универсальный интерфейс для различных баз (конечно, драйвер СУБД ставить в систему обязательно).

Пиши программу, которая сделает нужные запросы в обе базы и поймет, что нужно скопировать из одной в другую (ну и выполнит это копирование).
« Последнее редактирование: 25-05-2009 17:15 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
IrBiSSSSSS
Гость
« Ответ #6 : 25-05-2009 17:59 » 

а пример подобного запроса не могли бы привести?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 25-05-2009 18:30 » 

IrBiSSSSSS, думаю, что тебе надо теорию почитать сперва.
Посмотри это:

https://club.shelek.ru/view.php?id=15
Особенно "Введение в Базы данных" и серию "Введение в SQL".

https://club.shelek.ru/viewfiles.php?id=25
Тут книги о БД есть.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
IrBiSSSSSS
Гость
« Ответ #8 : 25-05-2009 18:59 » 

спасибо))))
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 25-05-2009 19:03 » 

По ID можно найти новые записи, но по ID не установить, был ли UPDATE записи, и нужно ли её повторно синхронизировать.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
IrBiSSSSSS
Гость
« Ответ #10 : 25-05-2009 19:05 » 

а как в таком случае поступить? сравнивать каждое поле записи?
Записан
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #11 : 25-05-2009 19:16 » 

IrBiSSSSSS, оторвать тебе башку и выбрость!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
IrBiSSSSSS
Гость
« Ответ #12 : 25-05-2009 19:17 » 

тоже вариант))
Записан
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #13 : 25-05-2009 19:20 » 

IrBiSSSSSS,

1. Прочти пожалуйста то, на что тее дал ссылки RXL.
2. Никто тебе однозначно не ответит как тебе проверить твои записи, потому что ты до сих пор не описал структуру ни одной из таблиц.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #14 : 25-05-2009 19:21 » 

dimka, по одному ID естественно не возможно понять есть такая запись в другой бд или нет, но я ведь и таблиц не видел!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #15 : 26-05-2009 03:28 » 

Я бы вместо access использовал EmbededOracle или TimeTens. В остальном проблем не вижу.
кстати в оракле есть уникальный идентификатор записи rowid(уникален во всей БД и даёт самый быстрый доступ к записи) его можно хранить в Access, что-бы не парится с ключами. При вставке новых записей из Access в Oracle нужно будет через returning получить rowid новой записи.
Короче фигня задача Улыбаюсь садись да пиши.
Записан

Странно всё это....
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 26-05-2009 06:38 » 

Цитата: McZim
dimka, по одному ID естественно не возможно понять есть такая запись в другой бд или нет
Вот это-то, как раз, можно Улыбаюсь По ID нельзя узнать, менялась она или нет.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #17 : 26-05-2009 07:31 » 

dimka, ну да это и имел ввиду, не так выразился.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 26-05-2009 07:47 » 

Я бы GUID использовал для идентификации - ИМХО более универсально, а разница в скорости доступа к Oracle с использованием RowID на фоне скорости доступа к Access думаю не будет заметна...
И какой-то Timestamp для изменения записи. В Access есть тригеры на изменение?
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 26-05-2009 15:40 » 

Цитата
...на мобильных терминалах - базы Excess...
Цитата
как я уже говорил, синхронизацию данных двух баз- эксесс и оракл.
Исходя из вышесказанного, ID записей в базах Access могут совпадать, но содержать различную информацию поэтому GUID  видимо более предпочтительней, а имея в записи таблицы Access поле-флаг устанавливаемый при добавлении/обновлении и сбрасываемый при репликации/синхронизации можно попытаться решить эту задачу.
« Последнее редактирование: 26-05-2009 15:43 от Oldy » Записан

С уважением, Oldy.
IrBiSSSSSS
Гость
« Ответ #20 : 26-05-2009 18:16 » 

спасибо, всем за помощь! в ходе написания программы, если будет возникать необходимость(надеюсь, до этого не дойдет), буду обращаться к гуру дальше:)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines