-
Очень злой (24.02.11 11:15) [0]Требуется выбрать некую информацию, которая формируется из таблиц, часть которых находится в Oracle а часть в VFP
Каким образом проще работать с двумя СУБД ?
Я так понимаю что нужно создать временные таблицы в одной СУБД, и перенести в них информацию из другой СУБД, чтобы потом нормально работать с SQL.
Но как тогда проще переносить таблицы?
Создавать временные таблицы и в цикле переносить построчно все записи или можно проще, чтобы не городить лишних циклов? -
Можно попробовать прилинковать к ораклу ваши фокпрошные таблицы. Тогда ничего не надо переносить.
-
Очень злой (24.02.11 15:44) [2]
> Можно попробовать прилинковать к ораклу ваши фокпрошные
> таблицы. Тогда ничего не надо переносить.
Это можно сделать из своей программы? Чтобы вручную ничего не менять, например настройки ОДБС...
Если да, то по возможности приведите пример, или ткните мордой в гугл... :) -
> Это можно сделать из своей программы?
Это можно сделать из программы управления Ораклом, типа TOAD, PL/SQL Developer и т.д. и т.п. Даже из плюсов можно.
Наверное можно и из своей.
> ткните мордой в гугл...
http://www.google.ru/search?hl=ru&newwindow=1&q=Oracle+DataBase+Links&aq=f&aqi=g1&aql=&oq= -
Очень злой (25.02.11 12:43) [4]По некоторым причинам решил все-таки отказаться от прилинковки.
Теперь делаю необходимые запросы в фокспро и в результате получаю 1 набор данных, который далее нужно перенести в Оракл, для дальнейших операций с уже имеющимися в Оракле таблицами.
Получается что-то типа этого: (ADOReceipt - это уже открытый TADODataset c нужными данными)with TADODataSet.Create(Application) do
try
Connection:=AdoOra;
CommandText:='select * from TMP_NS where 0=1';
open;
try
AdoOra.BeginTrans;
AdoReceipt.First;
while not AdoReceipt.Eof do
begin
insert;
for i:=0 to AdoReceipt.Fields.Count-1 do Fields[i].Value:=AdoReceipt.Fields[i].Value;
post;
AdoReceipt.Next;
end;
AdoOra.CommitTrans;
except
AdoOra.RollbackTrans;
end;
finally
free;
end;
Это нормально 2 цикла по записям и по полям? Или можно как-то попроще и красивее в смысле реализации в Дельфи? -
Очень злой (25.02.11 12:44) [5]* ADOReceipt - это уже открытый TADODataset c нужными данными, выбранными из таблиц VFP
-
Коммитить вставку каждой записи вовсе необязательно.
-
Очень злой (25.02.11 19:09) [7]
> Sergey13 © (25.02.11 17:16) [6]
>
> Коммитить вставку каждой записи вовсе необязательно.
насчет комита немного не понял.
т.е. post убрать из цикла?
А вообще интересовало меня то, правильный ли это подход? либо есть попроще конструкции? -
> [7] Очень злой (25.02.11 19:09)
Сори. Похоже это я что то протупил. Мне показалось, что коммит внутри цикла. -
Кщд (28.02.11 15:02) [9]>Очень злой (25.02.11 19:09) [7]
>А вообще интересовало меня то, правильный ли это подход? либо есть попроще конструкции?
если есть возможность(административная. техническая есть точно) создать dblink из Oracle на фокс, то так и нужно сделать. -
Очень злой (01.03.11 00:06) [10]
> если есть возможность(административная. техническая есть
> точно) создать dblink из Oracle на фокс, то так и нужно
> сделать.
Теоретически можно... Но если тут не обойтись без настройки ODBC - то в моем случае смысла нет.