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

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

Мост перекачки данных FoxPro > Oracle с помощью чего организовать [D5, D7, dBase, FoxPro]


Yuraz ©   (2003-03-20 10:42:00) 

Приветствую всех!
Очень нуждаюсь в совете. Есть необходимость регулярно брать данные из базы данных FoxPro (файлы DBF лежат в дирректории) и эти данные переводить в таблицу БД Oracle. Таблицу в таблицу, колонку в колонку, причём с условием по дате и подобного, т.е. записи не все из фокса беру. Некоторые поля необходимо преобразовывать в другой тип, если этого типа нет в Oracle. Возможно, со временем, и обратно. Интересует инструменты, с помощью которых это делается. Писать экзешник не хочется (для этих целей у меня есть Power Builder, который совсем не известен, и есть D7, который для этих целей и хотелось бы юзать), возможно ли организовать по другому, например с помощъю стороней, хорошо написанной проги и т.п.
Видел прогу типа cDbf2Ora.exe, http://delphi.vitpc.com/mastering/poligon/ora_dbf.htm, совсем не подходит. таблицы и поля в базах я знаю, в той и другой. Надо конвертировать только данные, возможно с преобразованием типа в некоторых.
Т.е. каков план действий, открытие файла DBF, с помощью BDE (опять с помощью какой программы?) потом... а потом не знаю...

Заранее спасибо за любые ответы.


Val   (2003-03-21 10:32:00) [1]

>Sergey13 © (21.03.03 10:30)
Я не обижаюсь, а взываю к справедливости :))


Sergey13   (2003-03-21 10:30:00) [2]

Val © (21.03.03 10:09)
Не обижайся. В вопросе было "Таблицу в таблицу, колонку в колонку" и "Некоторые поля необходимо преобразовывать в другой тип". Отсюда и мои слова.
Опять повторюсь - для однозначного совета мало данных в вопросе. Да и вообще "однозначно" только у Жириновского бывает. 8-)


Val   (2003-03-21 10:09:00) [3]

>Sergey13 © (21.03.03 09:12)
Про пушку - я говорил о "Мощи PL/SQL" совсем не для "преобразования типов", не нужно передергивать.Я говорил об универсальности такого загрузчика - загрузив данные во временную таблицу можно рассовывать данные как угодно и куда угодно.


Sergey13   (2003-03-21 09:12:00) [4]

2Val © (20.03.03 11:49)
>думаю, вариант со временной таблицей лучше
Ну про "лучше" тут вопрос спорный. Зависит от количества строк в "импорте". Запись то во временную таблицу придется делать в программе построчно, а это могут быть тысячи строк. "Мощь PL/SQL" для "преобразования типов" при этом может оказаться стрельбой из пушки по воробьям.
Хотя и так можно, не спорю, а можно и смесь твоего и моего варианта попробовать - надо смотреть конкретику.


Val   (2003-03-20 11:49:00) [5]

>Sergey13 © (20.03.03 11:36)
думаю, вариант со временной таблицей лучше - оперирование данными будет происходить с помощью довольно мощных возможностей PL/SQL. Советую именно данный вариант, опираясь на опыт его использования. Возможность универсальности закачки и обработки - очень хорошая.


Sergey13   (2003-03-20 11:36:00) [6]

На
http://oraclub.trecom.tomsk.su/
были похожие штуки. Но лучше, ИМХО, самому сделать. Тем паче, что преобразования какие то надо делать. Можно попробовать например так. Сформировать програмкой (своей) типизованый текстовый файл и закачать его потом оракловым лодером. Можно все это автоматизировать и запускать одним батником.


Yuraz   (2003-03-20 11:14:00) [7]

Описался, конечно экзешник (надо делать) и сделаю на D5-7, но только не PB, некогда в PowerBuilder разбираться, Delphi знакомей. В приципе, как я понял, решаемо, будем пробовать. Спасибо,
Соловьев © (20.03.03 10:49) и Val © (20.03.03 10:54)!!!


Val   (2003-03-20 10:54:00) [8]

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


Соловьев   (2003-03-20 10:49:00) [9]

Открыть DBF с помощью TTable, а Oracle - через свои компоненты и используя код:
with TableDBF do
begin
Open;
First;
while not Eof do
begin
TableOracle.Insert;
TableOracle.FieldByName("FieldOra").AsString{???} := FieldByName("FieldDBF").AsString;
...
TableOracle.Post;
Next;
end;
end;

Медленно но уверенно. Можно попробовать ButchMove... Хотя там приведение типов не знаю как сделать...


Наверх

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