Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна идея. Передача даных с одной БД в другую (FireBird)


_RusLAN ©   (2006-01-20 14:42:00) 

Здравствуйте!
Помогите советом.
Нужно организовать передачу данных из одной БД в другую через файл.
Точнее, есть база (Firebird), из нее надо выбрать некоторую информацию (информация из разных таблиц и между ними есть связи),
сохранить ее в файл
файл перенести на другой компьютер и из него информацию перенести в другую базу (тоже Firebird).
Каким способом лучше все это делать?
Спасибо.


Desdechado   (2006-01-20 18:24:00) [1]

много записей для скрипта не проблема
при "гонянии" данных туда-сюда только репликация


UnDISCOvery   (2006-01-20 17:00:00) [2]

В ADO есть такая штука - Briefcase ... как раз для переноса данных коммивояжерам :)


msguns   (2006-01-20 16:25:00) [3]

Почитай о репликациях


_RusLAN   (2006-01-20 16:13:00) [4]

Всем спасибо!

Уточню еще задачу, а то предложеных вариантов много - не знаю какой выбрать.

Основная база будет содержать много таблиц, информации в  которых будет накапливатся годами.
Информация для этой базы собирается с разных объектов в разных городах.

Когда пользователь едет на объект то берет с собой (в свое локальной базе) информацию только из нескольких таблиц. Их можно разбить на два типа:
 1. таблицы-справочники которые должны содержать вс ю информацию из основной базы (несколько тис. записей).
 2. таблицы которые должны содержать только последние записи из основной базы.

Пользователь на обьекте добавляет записи в таблицы тип.2. Где каждая запись ссылается на предыдущую а также на справочники, между которыми также есть связи.
Также пользователь может добавлять записи и в справочники.

Потом из базы пользователя надо перенести все новые записи в основную базу.

Я думаю делать так:
Создать чистую базу из скрипта.
Записи из таблиц тип.2 передать тоже через скрипт.
А вот справочники через скрипт наверно не получится  - много записей. Думаю подойдет вариант со внешними таблицами, буду разбиратьсячто это такое.

Такой вариант подходящий?


Desdechado   (2006-01-20 16:02:00) [5]

самое простое - выгрузить в скрипт, загрузить из скрипта
только триггеры на автоинкремент (и прочие подобные) отключить при загрузке, а потом вручную увеличить генераторы


Sergey13   (2006-01-20 15:59:00) [6]

2[9] msguns ©   (20.01.06 15:53)
Тогда да, наверное.


msguns   (2006-01-20 15:53:00) [7]

>Sergey13 ©   (20.01.06 15:36) [7]
>Помпой вроде можно, если обе БД доступны в онлайне. Нет?

Я имел в виду репликацию по схеме:
Комп 1:
Старая БД -(помпа)-> БД к репликации (любой формат) -> rar
Комп 2:
rar -> БД к репликации (любой формат) -(помпа)-> Новая БД

Правда, для этой схемы нужно, чтобы на обеих тачках было помпа ;)


DSKalugin   (2006-01-20 15:39:00) [8]

если обе в онлайне, то достаточно одной базы данных, вторая тут не нужна
все подключения перевести на единую базу


Sergey13   (2006-01-20 15:36:00) [9]

2[6] msguns ©   (20.01.06 15:33)
Помпой вроде можно, если обе БД доступны в онлайне. Нет?


msguns   (2006-01-20 15:33:00) [10]

>Sergey13 ©   (20.01.06 15:27) [4]
>Может и еще как можно.

Datapump ?


DSKalugin   (2006-01-20 15:32:00) [11]

выгрузить результат запроса в файл TFIBQuery.BatchOutputRawFile
сархивировать, если файл большой
перенести на другую машину
распаковать, если он был запакован арзхиватором
загрузить данный в запрос TFIBQuery.BatchInputRawFile
и использовать эту информацию по своему усмотрению
хош по таблицам расталкивай, хош распечатай и сожги...

и так по каждой таблице

аналогично смотри
TFIBOutputDelimitedFile


Sergey13   (2006-01-20 15:27:00) [12]

2[2] _RusLAN ©   (20.01.06 15:15)
Тогда все просто и разнообразно.
1.Самое простое - создай копию БД через бэкап, удали все ненужное и отдай готовую базу.
2.Выведи нужные таблицы в новые внешние таблицы и отдай их. Там обратная процедура.
3.Вывести нужное в отдельный(е) файл(ы) в виде скрипта на вставку. У потребителя - накатить скрипт.
4.Можно сохранить например через CDS (прямо со связями), а у потребителя перегнать в БД.

Может и еще как можно.


Digitman   (2006-01-20 15:22:00) [13]

метаструктура обеих баз одинакова ?


_RusLAN   (2006-01-20 15:15:00) [14]

Sergey13 ©   (20.01.06 14:52) [1]
А инфу надо в чистые таблицы закачивать или пополнять имеющиеся?

В чистые.
Новая база будет содержать только ту информация которая выберется из основной.


Sergey13   (2006-01-20 14:52:00) [15]

А инфу надо в чистые таблицы закачивать или пополнять имеющиеся?


Наверх

Титульная страница Поиск, карта сайта Написать письмо