![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка 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)
Это тупиковое направление действий.