|
Как записать большой объем (2 млн записей) в регистр сведений? | ☑ | ||
---|---|---|---|---|
0
ИС-2
naïve
14.05.12
✎
17:56
|
Есть периодический РС с 2 измерениями. Терминал, Доп период. При этом измерение Доп период не заполнено.
Необходимо как-то загрузить в регистр 2 млн. записей из DBF файла. Проблема в том, что если делать отбор набора записей только по Терминалу, то запись вылетает с ошибкой "Не хватает памяти". Записывать по 1 записи очень долго (отбор Терминал + Период). Вопрос как можно быстро записать данные в регистр? |
|||
1
rrunover
14.05.12
✎
17:57
|
блоками не предлагать?
|
|||
2
hhhh
14.05.12
✎
17:58
|
транзакции используйте. Допустим, 1000 записей в транзакции.
|
|||
3
H A D G E H O G s
14.05.12
✎
17:59
|
Грузить в SQL таблицу, чтобы уникальность в разрезе измерений не проверялось.
|
|||
4
H A D G E H O G s
14.05.12
✎
18:00
|
(0) Поясни - у тебя 2 млн. терминалов, или 2 млн. периодов, или 2 млн. Терминал-Период ?
|
|||
5
ИС-2
naïve
14.05.12
✎
18:02
|
(1) А как блоками можно? У меня только одно измерение - в набор записей попадают все записи (2 млн).
(2) Аналогично. Я не знаю как создать набор записей пр. с 100 тыс записями. И загрузить в него. И потом еще раз и еще раз |
|||
6
ptiz
14.05.12
✎
18:03
|
Записать (Write)
Синтаксис: Записать(<Замещать>) Параметры: <Замещать> (необязательный) Тип: Булево. Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям Значение по умолчанию: Истина Описание: Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение. |
|||
7
ИС-2
naïve
14.05.12
✎
18:04
|
(4) 2 млн. Терминал-Период. Кроме проблемного терминала есть другие терминалы. Всего в регистре 16 млн. записей.
|
|||
8
ИС-2
naïve
14.05.12
✎
18:04
|
(6) Это проблему с памятью не решает. Т.к в выбранный набор записей попадут все записи с указнным терминалом
|
|||
9
dauster
14.05.12
✎
18:29
|
Имхо, можно попробовать перезаписать регистр следующим образом:
1) устанавливаем размер блока записи, скажем в 50000 записей. 2) делаем выборку регистра сведений с отбором по пустому доп. периоду. 3) создаем набор записей с отбором по нужному доп. периоду. 4) начинаем обход выборки (п.2), добавляем в набор (п.3) записи до максимального размера блока (п.1). 5) записываем набор записей (с параметром замещения ЛОЖЬ). 6) очищаем набор записей 7) продолжаем обход выборки, т.е. переходим на п.4 до тех пор, пока не обойдем все записи. после всей этой фигни количество записей регистра удвоится (останутся старые записи с пустым доп. периодом и появятся новые), поэтому старые нужно удалить - создав и записав пустой набор записей по пустому доп. периоду. |
|||
10
ptiz
14.05.12
✎
19:30
|
(8) "в выбранный набор записей попадут все записи с указнным терминалом" -
они попадут в базу, но не будут занимать ОЗУ. |
|||
11
aleks-id
14.05.12
✎
20:09
|
грузи напрямую в таблицу скуля из текстового файла с разделителями через bulk insert
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |