![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу произвести выгрузку в Excel большое количество записей. [D6, FireBird]
galexis © (2004-12-16 09:24:00)Выгружаю данные из базы в файл Excel. Небольшое количество записей выгружается нормально (до 600 записей). Большее - пишет не хватает памяти. Иногда пишет не может записать файл ib_sort в winnt\temp. Заподозрил, что мало отводится места под сортировку. Изменил параметр в ibconfig. Сделал 1000000000 (~1Гб) tmpdirectory. Теперь явно пишет, что нет места для файлов ib_sort. Что не так?
Александр Иванов (2004-12-16 11:50:00) [1]sniknik © (16.12.04 11:45) [20]
Да, с гигабайтами я переборщил :)
sniknik (2004-12-16 11:45:00) [2]Александр Иванов © (16.12.04 11:21) [15]
пез пояснений каждый понимает по своему. и потом ты лихо мегабайтам вес повысил... ;о)) а без этого и догадки будут неверными.
Danilka (2004-12-16 11:36:00) [3][6] Александр Иванов © (16.12.04 10:43)
Круто! Конечно, извратов всяких видел, но, надеюсь, в реальных задачах (да еще и выгрузка в эксель в таком виде) такое не встречается. :))
[17] galexis © (16.12.04 11:24)
Вобщем, почему проблема написано в [13] а как ее решить в [16]. :))
}|{yk (2004-12-16 11:31:00) [4]Так должно же написать, что в принтере нет бумаги ;)
galexis (2004-12-16 11:24:00) [5]Вы правы. Места на диске не хватило. Все 15Гб занял!
Johnmen (2004-12-16 11:23:00) [6]>galexis ©
Видимо, сортируемые записи очень велики.
Надо оптимизировать запросы.
Написать ХП с реализацией получения конечных 5т.записей.
Александр Иванов (2004-12-16 11:21:00) [7]sniknik © (16.12.04 10:57) [9]
Это не наивное представление. Это просто доказательство, что даже для короткой строки мы получим довольно большие объемы информации.
sniknik (2004-12-16 11:20:00) [8]http://cs.ifmo.ru/education/documentation/sql_kg/3-2-1.shtml
sniknik (2004-12-16 11:18:00) [9]> Запрос очень большой, из 42 таблиц.
"приджойненные" друг к другу? тогда да может быть, при джойне строится декартово произведение таблиц (каждое на каждое), что в результате от 42 таблиц получится... подумать страшно ;о)).
galexis (2004-12-16 11:12:00) [10]Увеличил tmp_directory на одном диске до 2Гб, на втором до 1Гб. Создаются файлы ib_sort до 1,7Гб. Это ORDER BY так работает?
galexis (2004-12-16 11:09:00) [11]
> Johnmen
Компонент IBQuery. Запрос очень большой, из 42 таблиц. Возвращает около 40 тыс записей. По данным из этих записей строится другой, еще более больший запрос. Он возвращает одну запись и эта запись выгружается в excel. В итоге должно выгрузится в excel около 5 тыс записей.
Johnmen (2004-12-16 10:59:00) [12]>galexis ©
Покажи запрос. И какой компонент-держатель НД используется.
sniknik (2004-12-16 10:57:00) [13]>> 256*600*256 = 37.5 Gb
> 256 это что?
похоже 600 это записей,
первая(или вторая) 256 это количество допустимых полей в записи,
и вторая (или первая) 256 это наивное представление, что ексель не позволяет мемо полей а только короткие строки. ;о)) (максимальные значения)
galexis (2004-12-16 10:49:00) [14]
> Александр Иванов ©
> 256*600*256 = 37.5 Gb
256 это что?
galexis (2004-12-16 10:47:00) [15]
> sniknik ©
На самом деле Excel тут не причем, до него еще не доходит дело. Строк там должно выгрузиться около 5тыс.
> Danilka ©
Гиг отведен для сортировки на сервере. А 600 записей весят около 500Кб. Выгрузка построчно идет. Строка - запись. после выгрузки 600 записей выскакивает ошибка - не хватает места для сортировки.
Александр Иванов (2004-12-16 10:43:00) [16]Danilka © (16.12.04 10:40) [4]
256*600*256 = 37.5 Gb
:).
Соловьев (2004-12-16 10:42:00) [17]Интересно увидеть код выгрузки
И еще, у IBExpert можно данные выкинуть в Ексель, попробуй - выкинет?
Danilka (2004-12-16 10:40:00) [18][3] sniknik © (16.12.04 10:39)
Дык, он говорит - больше 600 записей. Что-то тут не так. Ну не может, по моему скромному мнению, 601 запись весить гиг. :))
sniknik (2004-12-16 10:39:00) [19]а ты что весь гиг в один экселевский файл заливаеш? а ограничение на запись не более 65535 строк в листе не нарушаеш?
или это не тот "файл Excel" что из мсофиса?
galexis (2004-12-16 10:33:00) [20]
> Johnmen ©
Прочитал, спасибо. Ошибка действительно такая была до изменения ibconfig. Но ответа так и не нашел. Свободного места на диске 15 Гб. Пробовал и два места указывать. Та же беда. Может tmp_directory ограничен максимальным размером и не может быть 1Гб?