Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизКак закрывать пройденные записи в OracleDataSet Найти похожие ветки
← →
ali_tash (2005-11-02 19:23) [0]Проблема такая:
я выбираю данные из таблицы с большим количеством записей
в OracleDataSet и в цикле их все перебираю.
На очень больших таблицах выдаётся сообщение OutofMemory.даже если свойство QueryAllRecords:= False
то память всё равно кончится но позже.
Можно конечно надстроить ещё один цикл и выбирать по 1000
записей, но хотелось бы узнать можно ли освободить те записи которые я уже прошёл, т.е. паралельно с открытием следующей порции записей закрывать предыдущие ?
← →
umbra © (2005-11-02 20:01) [1]нет.
← →
Fay © (2005-11-02 20:22) [2]2 ali_tash (02.11.05 19:23)
Unidirectional ?
← →
roottim © (2005-11-03 09:13) [3]Делай на сервере...
declare
...
begin
cursor c in (select ... from ...)
loop
end loop;
end;
а можетupdate
достатточен
← →
ANB © (2005-11-03 09:26) [4]Я так понимаю это DOA ? Замени TOracleDataSet на TOracleQuery. И будет тебе счастье.
← →
Sergey13 © (2005-11-03 09:49) [5]А еще можно попробовать не работать с Ораклом как с Парадоксом.
← →
ANB © (2005-11-03 09:51) [6]
> Sergey13 © (03.11.05 09:49) [5]
Тебе нужно перекачать в MS SQL всю таблицу (точнее запрос из нескольких). При этом провести логическую обработку данных. Легче всего это делать клиентом на делфи.
← →
Sergey13 © (2005-11-03 10:03) [7]2 [6] ANB © (03.11.05 09:51)
А тут перекачка? Не разглядел. Да и при перекачке необязательно тянуть сразу все.
← →
ANB © (2005-11-03 10:19) [8]
> Sergey13 © (03.11.05 10:03) [7]
Я уже собирался тоже пилить на порции, да опробовал Query и не стал. Кстати, TOracleQuery не является дейтасетом со всеми вытекающими.
← →
Курдль © (2005-11-03 11:28) [9]
> ali_tash (02.11.05 19:23)
> я выбираю данные из таблицы с большим количеством записей
> в OracleDataSet и в цикле их все перебираю.
> На очень больших таблицах выдаётся сообщение OutofMemory.
А нельзя ли уточнить цифру "очень больших".
Помницца, у меня была тестовая прога для оценки быстродействия. Там были многомиллионные датасэты и никто ни разу не ругнулся. Не могла ли закрастся в код ошибка с не освобождаемым ресурсом?
← →
ANB © (2005-11-03 11:32) [10]
> Курдль © (03.11.05 11:28) [9]
на милионе записей уже упадет. Это особенность TOracleDataSet - уже зафетченные записи он держит в памяти.
← →
Val © (2005-11-03 12:24) [11]>[6] ANB © (03.11.05 09:51)
фиг знает. есть еще sqlloader...
← →
ANB © (2005-11-03 12:34) [12]
> Val © (03.11.05 12:24) [11]
лоадер в ораклу все загружает. Связь MS SQL - Oracle - просто ужасная. Что с одной, что с другой стороны. Просто перетянуть данные еще можно, а сложную обработку при этом фиг сделаешь.
← →
Val © (2005-11-03 12:39) [13]я имею ввиду загрузку в оракл лоадером и обработку с помощью pl\sql на сервере, как альтернативу перегонов через клиент и обработку на нем.
← →
Fay © (2005-11-03 13:18) [14]2 ali_tash (02.11.05 19:23)
Какая версия DOA?
← →
ANB © (2005-11-03 13:57) [15]
> Val © (03.11.05 12:39) [13]
Так мы из оракла в MS SQL данные перегоняли
← →
Val © (2005-11-03 14:09) [16]ааааа :) я не знаю про аналогичную штуковину в MS SQL ничего, но, вероятно, должна быть..то есть делаем то же самое, только наоборот :)
← →
ali_tash (2005-11-03 21:34) [17]Unidirectional - OK
Спасибо.
← →
Fay © (2005-11-03 23:04) [18]2 ali_tash (03.11.05 21:34) [17]
Вот и славно! А то я уже подумал, что не понял вопрос.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c