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

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

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

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

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

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

Врёшь, для 32-х разрядных приложений практический предел - два гигабайта. Теоретический - три.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.01.2021, 15:27
    #40036363
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FDMemTable как вставить 800000 записей с 1500 столбцов
столбцы создаются динамически... если выбрали интервал 01.01.2020-31.12.2020, то в итоге 366 дней * 4 столбца (необходимо для каждого дня года)...
потом обрабатываю результат запроса (около 80000 строк)...посточно вставляю в MemTable
при вставке более 25000 строк "Out memory"
...
Рейтинг: 0 / 0
16.01.2021, 15:29
    #40036364
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FDMemTable как вставить 800000 записей с 1500 столбцов
asutp2
если не трудно, напиши подробнее, как группой вставить в MemTable
...
Рейтинг: 0 / 0
16.01.2021, 15:32
    #40036366
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FDMemTable как вставить 800000 записей с 1500 столбцов
Код: 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
16.01.2021, 15:40
    #40036369
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FDMemTable как вставить 800000 записей с 1500 столбцов
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
16.01.2021, 15:57
    #40036375
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FDMemTable как вставить 800000 записей с 1500 столбцов
SergeyKNP
Потребовалось динамически создать 1500 столбцов и потом последовательно вставлять около 800000 запичей Insert'ом

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

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


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

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

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


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

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

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

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


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

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

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

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


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