Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Экспорт данных   Найти похожие ветки 

 
viola   (2005-02-17 15:34) [0]

У меня такой вопрос:
У меня есть две базы данных,аналонгичной структуры,размещенные на очень большом расстоянии друг от друга, но в некоторый момент появляется необходимость экспортировать данные из одной базы и импортировать в другую.
Как мне это все реализовать с помощью Delphi.
СУБД - MySQL.


 
Suharew   (2005-02-17 16:38) [1]

Берешь Делфи, добавляешь на форму два компонента TTable , один указывает на одну базу, другой на другую, читаешь из первой БД записи и добавляешь их во вторую БД. Ты вообще с базами в делфи работала?? Хоть какие-то навыки есть??


 
Reindeer Moss Eater ©   (2005-02-17 16:42) [2]

размещенные на очень большом расстоянии друг от друга
Надо одну поднести на близкое расстояние к другой.


 
Ольга   (2005-02-17 16:42) [3]

Важно не на каком расстоянии расположены базы, а связаны как-то или нет. Если связаны можно настроить репликации (есть и другие изящные способы), если нет - дело муторное...


 
Suharew   (2005-02-17 16:56) [4]

правильно сказал Reindeer Moss Eater надо одну поднести к другой. и произвести процедуру(ы) слияния/пересечение/объединения в общем, то что надо. Можно-то с помошью DataBase Desktop, скопировать записи из одной базы в другую.

Ольга Причем здесь репликации, базы одинаковы, я так понял что просто надо скопировать часть базы в другую и все.


 
viola   (2005-02-17 17:08) [5]

>Suharew Ты вообще с базами в делфи работала??
Я же написала, что использую СУБД MYSQL и BDE-ые штучки отдыхают - пользуюсь API сервера.
Reindeer Moss Eater
Базы данных расположены в организациях из разных териториальных областей.Так что расположить базы рядом не получиться.

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


 
Suharew   (2005-02-17 17:33) [6]

Ну тогда вчем дело? выгружай новые данные (т.е с момента последней выгрузки) из таблицы в другую таблицу, потом передаешь ее по инету, и закачиваешь в центральную базу.


 
Reindeer Moss Eater ©   (2005-02-17 17:38) [7]

и вот собственно стоит вопрос как выгрузить данные, в текстовик,

while not Query.Eof do
begin
 WriteNextRecordToTextovik;
 Query.Next;
end;


 
Ольга   (2005-02-18 07:51) [8]

Не советую связываться с текстовыми файлами. Имея мощные средства SQL, не стоит переходить на "пещерный" уровень.
Полностью поддерживаю [6].

Схема такая:
1. Нужно создать буферную базу на удаленном сервере и хранимую процедуру, которая сбрасывает туда данные (возможно, понадобится конфигурационная таблица со списком экспортируемых таблиц).
2. Делается backup буферной базы и передается любыми доступными средствами (I-net, e-mail, на лошадях) на центральный сервер.
3. На центральном сервере делается restore буферной базы и запускается хранимая процедура импорта из буферной базы в основную.

Таким образом клиентское приложение должно содержать 2 функции "Экспорт" и "Импорт" для запуска соответствующих хранимых процедур.

В общем, как я уже говорила, дело муторное.
Хотелось бы услышать мнение опытных в этом деле программистов, для меня эта тема тоже актуальная.
Критикуйте (желательно конструктивно), мастера!


 
Danilka ©   (2005-02-18 09:02) [9]

[8] Ольга   (18.02.05 07:51)
> Не советую связываться с текстовыми файлами. Имея мощные
> средства SQL, не стоит переходить на "пещерный" уровень.

То-то и в Орокле и в МССкуле есть штатные средства загрузки/выгрузки данных в текстовые файлы. :)


 
Danilka ©   (2005-02-18 09:06) [10]

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


 
Ольга   (2005-02-18 09:16) [11]

[10]
Именно по этой причине загрузка из текстового файла и не подходит. Нужна процедура, отслеживающая корректность загружаемых данных, потому гораздо удобнее манипулировать данными, лежащими в таблице, а не в текстовом файле.


 
Danilka ©   (2005-02-18 09:30) [12]

[11] Ольга   (18.02.05 09:16)
> Именно по этой причине загрузка из текстового файла и не
> подходит.

Говорою-же, формат значения не имеет. Ну передавай, например, по 3 текстового файла на каждую таблицу: новые записи с момента последней загрузки, имененные записи, идентификаторы удаленных записей.
В базе триггер на добавление/изменение/удаление в этой таблице, который пишет в другую таблицу идентификатор записи, дату и код операции. А в выгрузке, выгружаешь отуда все идентификаторы удаленных записей с момента последней загрузки в файл с удаленными записями, выгружаешь все измененные и удаленные, с момента последней выгрузки, записи в соответствующие файлы.
Потом, всю эту кучу файлов арживируешь в один.
Ну и загрузка соответствующая.
Это так, что навскидку сейчас придумалось. Наверняка, можно найти косяки и можно придумать лучше варианты. :)


 
Danilka ©   (2005-02-18 09:33) [13]

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


 
Reindeer Moss Eater ©   (2005-02-18 09:38) [14]

Именно по этой причине загрузка из текстового файла и не подходит.

Зависит от развитости фантазии загружающего.
Кто-то выполняет сложные запросы прямо над экспортно/импортным файлом. Кто-то грузит этот файл в буферную таблицу и обрабатывает непосредственный импорт пользуясь всем богатством средств языка платформы назначения.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.032 c
14-1109666383
Ozone
2005-03-01 11:39
2005.03.20
Новосибирск. Съем жилья.


14-1109514597
Qwatrbe4
2005-02-27 17:29
2005.03.20
Домен+хостинг


14-1109674782
Alx2(remote)
2005-03-01 13:59
2005.03.20
Оформление гражданства детям, рожденным после 1.07.2002


6-1106013209
Cryon
2005-01-18 04:53
2005.03.20
Определить IP клиента pop3 сервера (Indy)


1-1109868008
ТехникПТО
2005-03-03 19:40
2005.03.20
Скорость работы программы во время выполнения цикла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский