Вниз
Скачать: CL | DM;

Как закрывать пройденные записи в 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.037 c
14-1133791505
Санёк
2005-12-05 17:05
2005.12.25
Олимпиады по информатике.


3-1131429701
DevMaster
2005-11-08 09:01
2005.12.25
INSERT + автоинкрементное поле


2-1134029289
Свой
2005-12-08 11:08
2005.12.25
Tshape и глупенький вопрос:)


4-1130266042
zaN0za
2005-10-25 22:47
2005.12.25
возможно ли такое преобразование?


6-1126790732
Piero
2005-09-15 17:25
2005.12.25
Проблемма при отправке буфера




   Наверх