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

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

Добавление в одну БД информации из другой [D7, Yaffi Personal]


Страницы:   1 2

Disruptor ©   (2003-11-04 13:23:00) 

Есть общая база данных и распределенные пользователи, каждый из которых локально редактирует свои данные. Потом нужно связать эти данные воедино. Как лучше из проограммы пеерекинуть данные из одной БД в другую?
Спасибо.


Disruptor   (2003-11-06 07:58:00) [1]

Аминь. Оказывается - из этих таблиц не получается удалять данные. Придется генерировать скрипт при чтении из одной базы и потом запускать его для другой.


Zacho   (2003-11-05 17:45:00) [2]


> Disruptor © (05.11.03 11:00) [23]

Да, по-моему тоже это - самый быстрый способ экспорта/импорта данных. Но не всегда приемлемый.


Vemer   (2003-11-05 15:17:00) [3]

Вчера написал программу-насос, работающий через AppendRecord. Меньше возни с названиями полей.


Disruptor   (2003-11-05 11:00:00) [4]

Кстати господа вы забыли про EXTERNAL TABLE - с помощью них вообще никакой боли


Disruptor   (2003-11-05 10:33:00) [5]

И нужно, чтобы это все делало приложение автоматически. У меня такой вариант. Открываем таблицу дочернего узла. Пробегаемся по ее записям. И для каждой из них на ходу генерируем INSERT для базы головного узла. И так для всех таблиц. Нормально? Или есть способ лучше?

У меня общая база. Ее набивает около 200 человек. Каждый - свои данные. Потом их нужно интегрировать, чтобы в центральном месте все эти данные корректно отображались и редактировались


Deniz   (2003-11-05 10:00:00) [6]

Я так думаю у чела есть справочник(я бы точно сделал, очень много интересной информации можно держать по этому делу) по внешним ... как бы это обозвать ... базам, но наверное только ID_OutBD является ФК. В общем, автор молчит пока, там посмотрим что скажет.


Zacho   (2003-11-05 09:43:00) [7]


> Deniz © (05.11.03 09:21) [19]

Можно и так. Только зачем ? Здесь ID - абсолютно лишенее.
И все-таки, при чем здесь FK ?


Deniz   (2003-11-05 09:21:00) [8]

>Zacho © (05.11.03 09:09) [18]
>Смысл именно в том, что одно поле - это уникальный номер "внешней" БД (т.е. из которой берутся данные для репликации).

Это я понял, не так уж глуп :-)
Так вот смысл этот уникальный номер вставлять в ПК?
Привычно для IB делается
ID integer ... (PK + Generator + Trigger),
ID_OutBD integer,
ID_OutID integer (или как еще там нужно по задаче)
...
create unique index ... (ID_OutBD, ID_OutID)


Zacho   (2003-11-05 09:09:00) [9]


> Deniz © (05.11.03 08:59) [17]

А причем здесь FK ?
Смысл именно в том, что одно поле - это уникальный номер "внешней" БД (т.е. из которой берутся данные для репликации).


Deniz   (2003-11-05 08:59:00) [10]

>Zacho
А смысл использования 2-х полей в ПК? Может использовать искусственный ПК и уникальный индекс по 2-м ФК полям?
Проблемы искусственных и естественных ПК опять подняты :-)


Zacho   (2003-11-05 08:02:00) [11]


> Disruptor © (05.11.03 07:36) [15]

Нельзя. IB не поддерживает гетерогенные запросы.


Disruptor   (2003-11-05 07:36:00) [12]

У меня еще один вопрос/запрос по теме: можно ли в рамках одного запроса сделать INSERT в одну базу данных с помощью SELECT из другой? Спасибо.

т.е. INSERT INTO DB1 .... SELECT ... FROM DB2...


Zacho   (2003-11-04 15:43:00) [13]


> Vemer © (04.11.03 15:04) [13]
> ПК использую, но назначить на 2 поля в голову не приходило.
>
> То есть если я сделаю ПК из 2-полей, то внутри каждого столбца
> могут быть повторяющиеся значения, главное чтоб повторяющихся
> пар небыло?

Именно так.

А книгу хорошую все-таки найди. Закажи в каком-нибудь интернет-магазине, например. Понимаю, что дорого, но оно того стоит. Иначе постоянно будешь натыкаться на грабли, на которые уже натыкались задолго до тебя, и решать проблемы, которые уже давно решены.


Vemer   (2003-11-04 15:04:00) [14]

ПК использую, но назначить на 2 поля в голову не приходило.

То есть если я сделаю ПК из 2-полей, то внутри каждого столбца могут быть повторяющиеся значения, главное чтоб повторяющихся пар небыло?

To Zacho.
Ну нет у нас в городе книг таких. Даже по просто по IB нет.
Самотык и форум - основной источник моих знаний. Хорошо получилось ответил челу - сам чего-то нового узнал.


Zacho   (2003-11-04 14:24:00) [15]


> Vemer © (04.11.03 14:19) [11]

ПК - это первичный ключ. Т.е. набор полей, значения которых уникально в пределах таблицы. Минимум может состоять из одного поля, максимум - из всех полей таблицы.
P.S. Крайне рекомендую к прочтению К.Дж.Дейт "Введение в системы баз данных" или другую хорошую книгу по теории РСУБД.


Vemer   (2003-11-04 14:19:00) [16]

Уважаемые программисты, объясните зоотехнику пожалуйста, что такое ПК, и особенно из "двух полей", и как это связанно с объединением данных. Хочу программу правильно сделать.


Disruptor   (2003-11-04 13:58:00) [17]

Понял. Наверное - так и сделаю.


Zacho   (2003-11-04 13:55:00) [18]


> Disruptor © (04.11.03 13:50) [8]

Все-таки гораздо надежнее и удобнее ПК из 2-х полей. Первое - это номер узла, второе - первичный ключ из таблицы узла.


Disruptor   (2003-11-04 13:50:00) [19]

Уже частично почитал. Спасибо и простите дурака. Не додумался, что можно одноовремемнно две TDataBase открывать. При репликации я буду сначала узнавать максимаальный ID в таблице центрального узла, а потом сделаю апдейт в таблицах дочерних узлов, чтобы их ID был обязательно больше, чем в главной.

Ошибок быть не должно.


Zacho   (2003-11-04 13:47:00) [20]


> Disruptor © (04.11.03 13:43) [6]

Естественно, с помощью 2-х TDatabase (или TIBDatabase, или что ты там используешь)
А статьи все-таки почитай.


Страницы:   1 2

Наверх

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