Гость
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / ODBC Постраничная выборка из базы Transbase / 7 сообщений из 7, страница 1 из 1
12.03.2015, 14:53
    #38902523
Artprog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Постраничная выборка из базы Transbase
Добрый день. Необходимо подключиться из .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
13.03.2015, 14:51
    #38903962
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Постраничная выборка из базы Transbase
Artprogбудет выполняться очень долго и в итоге упадет из-за нехватки памяти.
Не будет. И не упадёт. Если, конечно, не использовать всякую фигню типа клиентских двунаправленных курсоров.
...
Рейтинг: 0 / 0
13.03.2015, 20:56
    #38904523
Artprog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Постраничная выборка из базы Transbase
Dimitry Sibiryakov,

можете привести пример "хорошего" кода?
...
Рейтинг: 0 / 0
14.03.2015, 15:07
    #38904883
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Постраничная выборка из базы Transbase
Код: 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
15.03.2015, 15:58
    #38905270
Artprog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Постраничная выборка из базы Transbase
Dimitry Sibiryakov,

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

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


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