powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / ODBC Постраничная выборка из базы Transbase
7 сообщений из 7, страница 1 из 1
ODBC Постраничная выборка из базы Transbase
    #38902523
Artprog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Необходимо подключиться из .net к базе transbase и выгрузить из нее все записи.
В каждой таблице несколько миллионов записей. Подключение успешно производится через ODBC.
Соответственно запрос типа
Код: sql
1.
SELECT * FROM TABLE_NAME


будет выполняться очень долго и в итоге упадет из-за нехватки памяти.

Вместо LIMIT в transbase используется FIRST:
Код: sql
1.
SELECT * FROM TABLE_NAME FIRST(1000)


Но как мне постранично выбирать все строки из таблицы? Не нахожу подробной документации по transbase и примера подобного запроса:
Код: sql
1.
SELECT * FROM TABLE_NAME LIMIT(10000,20000)
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38903962
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artprogбудет выполняться очень долго и в итоге упадет из-за нехватки памяти.
Не будет. И не упадёт. Если, конечно, не использовать всякую фигню типа клиентских двунаправленных курсоров.
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38904523
Artprog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

можете привести пример "хорошего" кода?
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38904883
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
#define NAME_LEN 50
#define PHONE_LEN 50

SQLCHAR      szName[NAME_LEN], szPhone[PHONE_LEN];
SQLINTEGER   sCustID, cbName, cbAge, cbBirthday;
SQLRETURN    retcode;
SQLHSTMT     hstmt;

retcode = SQLExecDirect(hstmt,
   "SELECT CUSTID, NAME, PHONE FROM CUSTOMERS ORDER BY 2, 1, 3",
   SQL_NTS);

if (retcode == SQL_SUCCESS) {
   while (TRUE) {
      retcode = SQLFetch(hstmt);
      if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
         show_error();
      }
      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

         /* Get data for columns 1, 2, and 3 */

         SQLGetData(hstmt, 1, SQL_C_ULONG, &sCustID, 0, &cbCustID);
         SQLGetData(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
         SQLGetData(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN,
            &cbPhone);

         /* Print the row of data */

         fprintf(out, "%-5d %-*s %*s", sCustID, NAME_LEN-1, szName, 
            PHONE_LEN-1, szPhone);
      } else {
         break;
      }
   }
}
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38905270
Artprog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

К сожалению Ваш когда для SQL Server и С++, а я борюсь с Trasbase на C#...
Но спасибо, что откликнулись на просьбу!
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38905273
Artprog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

При аналогичном коде на c#, приложение падает при выполнении запроса. У вас это место:
retcode = SQLExecDirect();
а у меня: reader = cmd.ExecuteReader();
спустя минуту-другую - съев около гигабайта оперативки, и сказав, что недостаточно памяти..
...
Рейтинг: 0 / 0
ODBC Постраничная выборка из базы Transbase
    #38905971
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtprogПри аналогичном коде на c#
Это совсем-совсем не аналогичный код.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / ODBC Постраничная выборка из базы Transbase
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]