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

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

Выборка N+K записей на FB


BanderLog ©   (2006-03-10 13:23:00) 

Здравствуйте! Подскжите каком образом можно организовать постепенную выборку записей из таблице.
Допустим по 100 штук. Выбрал 100 записей, обработал, закрыл запрос, выбрал другие 100 записей и т.д.
использую FB 1.5


BanderLog   (2006-03-10 14:40:00) [1]

Большое спасибо, ушёл разбираться. :)


Johnmen   (2006-03-10 14:38:00) [2]


> BanderLog   (10.03.06 14:35) [18]
> Объясни плиз, однонаправленный это какой?


Это unidirectional.
Если пользовать TIBSQL, то он такой по определению.
Если другой, то см. соотв. свойство.


BanderLog   (2006-03-10 14:35:00) [3]

2 [8] Johnmen ©   (10.03.06 13:59)
Объясни плиз, однонаправленный это какой?
И если в определённый момент времени на клиенте будет храниться только одна надпись, то вопрос отпадает.

2 [16]Sergey13 ©   (10.03.06 14:14)
Только если писать свою UDF по обработке Blob'a (документы ACad, Excel и т.д.)


PEAKTOP   (2006-03-10 14:15:00) [4]

Создай ХП, которая будет выбирать данные из таблицы упорядоченно (например, по ID), и генерить на каждом SUSPEND поле ID_SUSPEND, увеличивая его на единицу.
А потом на клиенте
1) SELECT * FROM MY_PROC WHERE (ID_SUSPEND >0) AND(ID_SUSPEND<=100)
2) SELECT * FROM MY_PROC WHERE (ID_SUSPEND >100) AND(ID_SUSPEND<=200)
3) SELECT * FROM MY_PROC WHERE (ID_SUSPEND >200) AND(ID_SUSPEND<=300)
И т.д.


Sergey13   (2006-03-10 14:14:00) [5]

2[14] BanderLog   (10.03.06 14:12)
>Обрабатывать надо данные.
В ХП не получится?


Johnmen   (2006-03-10 14:14:00) [6]


> А как же выборка 3 гигов на клиента, запрос то открыт, и
> дойдя до последней я выберу все 3 гига, которые будут где
> то на винте храниться... Или не так?


Не так. На клиенте в каждый момент времени будет не более 1 считанной записи.


BanderLog   (2006-03-10 14:12:00) [7]

В общем пока наиболее простой и быстрый способ получается с ID. В виду того что удалений не так уж много, должно получитсья.

Предыдущий мой ответ был для [11] Sergey13 ©   (10.03.06 14:08) Обрабатывать надо данные.


BanderLog   (2006-03-10 14:09:00) [8]

Выбрал 100 записей, обработал, закрыл запрос


Petr V. Abramov   (2006-03-10 14:09:00) [9]

Тогда уж лучше на API Firebirda утилитку написать. Записи все равно по одной fetch`атся, а что с выбранными делать, Вам уже рашать будет


Sergey13   (2006-03-10 14:08:00) [10]

2[10] BanderLog   (10.03.06 14:03)
Зачем на клиента то тащить если просто "перекинуть данные из одной таблицы в другую"?


BanderLog   (2006-03-10 14:03:00) [11]

А как же выборка 3 гигов на клиента, запрос то открыт, и дойдя до последней я выберу все 3 гига, которые будут где то на винте храниться... Или не так?


Sergey13   (2006-03-10 14:03:00) [12]

2[8] Johnmen ©   (10.03.06 13:59)
Так тут НД вообще не нужен вроде. Просто insert into... select вроде достаточно.


Johnmen   (2006-03-10 13:59:00) [13]

Не надо никаких диапазонов, никаких "по 100" и т.п.
Просто выполняется запрос на все интересующие записи. Получаем набор данных, при этом делаем его однонаправленным. Взяли из НД запись, обработали, пихнули, куда надо. Взяли следующую...


Sergey13   (2006-03-10 13:57:00) [14]

2[6] BanderLog   (10.03.06 13:47)
А почему не сразу все? Из-за файловых ограничений?


BanderLog   (2006-03-10 13:47:00) [15]

Как вариант конечно....  :)


Sergey13   (2006-03-10 13:43:00) [16]

2[2] BanderLog   (10.03.06 13:32)
>Мне необходимо перекинуть данные из одной таблицы в другую, размер таблицы в районе 3 гигов (блобы),

В этом случаеберу свои слова назад. 8-)

>каким образом это можно организовать наиболее эффективно?
По диапазону ИД-шников например.


BanderLog   (2006-03-10 13:42:00) [17]

Как выбрать сначала с 1 по 100, потом со 101 по 200 и т.д.?


Mikhail V   (2006-03-10 13:40:00) [18]


> Выбрал 100 записей, обработал, закрыл запрос

Выбрал 100 записей, обработал, Commit


BanderLog   (2006-03-10 13:32:00) [19]

Мне необходимо перекинуть данные из одной таблицы в другую, размер таблицы в районе 3 гигов (блобы), каким образом это можно организовать наиболее эффективно?


Sergey13   (2006-03-10 13:29:00) [20]

2BanderLog   (10.03.06 13:23)
Это тупиковое направление действий.


Наверх

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