powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FDMemTable как вставить 800000 записей с 1500 столбцов
25 сообщений из 92, страница 1 из 4
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036338
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потребовалось динамически создать 1500 столбцов и потом последовательно вставлять около 800000 запичей Insert'ом

структура MemTable создаётся нормально, но после вставки более 25000-30000 строки "Out memory"

может подскажете как поступить?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036339
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перейти на 64 бита и накинуть в комп террабайт ОЗУ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036340
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
винда десятка 64, оперативы на компе 42 Гб
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036341
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так программу надо компилировать в 64 бита, а не систему.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036343
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так сложилось, что это проблематично...а другие идеи есть?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036346
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKNP,

а просто выполнять группами sql запросы на вставку? Тогда никаких out of memory
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036347
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забить на программирование, раз уж не получается на калькуляторе посчитать сколько ОЗУ
займут желаемые данные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036351
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во время вставки записей память не поднималась выше 10ти
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036352
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие столбцы в таблице ?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036354
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2
"а просто выполнять группами sql запросы на вставку? Тогда никаких out of memory"

это же MemTable, как вставить группу строк?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036356
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKNP,

а что, работать с базой без MemTable не умеешь?)
ведь всё просто - создаешь соединение, создаешь для выполнения групповых запросов, формируешь sql-запросы группами и их выполняешь. И просто, и быстро, и решается твоя задача, без использования компа с гигантским количеством памяти.
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036358
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKNPво время вставки записей память не поднималась выше 10ти

Врёшь, для 32-х разрядных приложений практический предел - два гигабайта. Теоретический - три.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036363
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
столбцы создаются динамически... если выбрали интервал 01.01.2020-31.12.2020, то в итоге 366 дней * 4 столбца (необходимо для каждого дня года)...
потом обрабатываю результат запроса (около 80000 строк)...посточно вставляю в MemTable
при вставке более 25000 строк "Out memory"
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036364
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2
если не трудно, напиши подробнее, как группой вставить в MemTable
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036366
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    DM3.MemTB2.Close;
    DM3.MemTB2.FieldDefs.Clear;
    DM3.MemTB2.Fields.Clear;
    DM3.MemTB2.IndexDefs.Clear;

      for i1 := 1 to i2 do   //i2= 366*4
      begin
        DM3.MemTB2.FieldDefs.Add('DN' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);
        DM3.MemTB2.FieldDefs.Add('MM' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);

        DM3.MemTB2.FieldDefs.Add('DNs' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftCurrency, 0, False);
        DM3.MemTB2.FieldDefs.Add('MMs' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);
      end;

    DM3.MemTB2.CreateDataSet;
    DM3.MemTB2.Open;



потом вставляю построчно
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036369
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SergeyKNP
DM3.MemTB2.Close;
DM3.MemTB2.FieldDefs.Clear;
DM3.MemTB2.Fields.Clear;
DM3.MemTB2.IndexDefs.Clear;

for i1 := 1 to i2 do //i2= 366*4
begin
DM3.MemTB2.FieldDefs.Add('DN' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);
DM3.MemTB2.FieldDefs.Add('MM' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);

DM3.MemTB2.FieldDefs.Add('DNs' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftCurrency, 0, False);
DM3.MemTB2.FieldDefs.Add('MMs' + tg2 + tm2_n + FormatDateTime('dd', dt1), ftInteger, 0, False);
end;

DM3.MemTB2.CreateDataSet;
DM3.MemTB2.Open;

потом вставляю построчно


хоть как делай, но без перекомпилирования в 64 бита не получится
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036375
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergeyKNP
Потребовалось динамически создать 1500 столбцов и потом последовательно вставлять около 800000 запичей Insert'ом

структура MemTable создаётся нормально, но после вставки более 25000-30000 строки "Out memory"

может подскажете как поступить?


1500 * 800000 = 1200000000 байт, это если каждое поле занимает 1 байт и ни на что память больше не тратится.

Совсем "ку-ку"?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036377
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Врёшь, для 32-х разрядных приложений практический предел - два гигабайта. Теоретический - три.

Четыре
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036378
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergeyKNP
Потребовалось динамически создать 1500 столбцов и потом последовательно вставлять около 800000 запичей Insert'ом
структура MemTable создаётся нормально, но после вставки более 25000-30000 строки "Out memory"
может подскажете как поступить?


Ты же не будешь отображать эту таблицу визуально, в гриде ?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036380
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Ты же не будешь отображать эту таблицу визуально, в гриде ?"

как догадался? :) как раз для этого и нужно...а так бы писал сразу Excel например
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036381
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"хоть как делай, но без перекомпилирования в 64 бита не получится"

жаль...может есть ещё идеи как получить желаемое?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036383
SergeyKNP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я уж думаю, может создавать локально какой-нибуль файл на SQLlite например...писать туда и потом отобразить в гриде?
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036384
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergeyKNP
"Ты же не будешь отображать эту таблицу визуально, в гриде ?"

как догадался? :) как раз для этого и нужно...а так бы писал сразу Excel например


Ну я конечно не читал твое ТЗ, но что-то уж очень экзотическое.

Если нельзя отказаться от этого безобразия, то сделай одну реальный столбец, типа ID. А все остальные вычислимые.
Когда юзер будет листать твою мегатаблицу, то содержимое столбцов будет подтягиваться из... откуда ты там собирался их брать при заполнении таблицы.
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036386
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergeyKNP
я уж думаю, может создавать локально какой-нибуль файл на SQLlite например...писать туда и потом отобразить в гриде?

Проверь максимальное количество столбцов в SQLite. Может он не сможет 1500.
...
Рейтинг: 0 / 0
FDMemTable как вставить 800000 записей с 1500 столбцов
    #40036390
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim RusovЧетыре

Это если запускать программу на голом железе, без операционки. Дельфи на такое неспособна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 1 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FDMemTable как вставить 800000 записей с 1500 столбцов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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