Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.01.16;
Скачать: [xml.tar.bz2];

Вниз

Сохранение больших объемов данных в файл   Найти похожие ветки 

 
Vitalts   (2009-08-27 11:48) [0]

Есть проблема, со скоростью записи больших объемов данных.
Zeos справляеться с этой задачей на ура. Даже шустрее самого pgAdmina, но вот незадача, он наотрез отказываеться выдавать результаты на сложные запросы.
Пробовал юзать PostgesDAC, отлично понимает сложные запросы, данные с базы вытаскивает с терпимой скоростью, но вот как доходит дело до сбора данных для записи в файл, труба.
Приведенный код для ZEOS сохраняет данные в txt объемом в 20 Мб отрабатывет за менее чем 30 сек, он же, но с PostgresDACом не справляеться за [b]час[/b].
while ZQuery1.FindNext do
begin
   currrecord:= "";
   for i:= 0 to fieldscount - 2 do
     currrecord:= currrecord + ZQuery1.Fields.Fields[i].AsString + Edit9.Text;
   currrecord:= currrecord + ZQuery1.Fields.Fields[fieldscount-1].AsString;
   txt.SaveNext(currrecord);
end;

Что можете посоветовать? Как ускорить процесс? Уменьшить хотябы скорость отработки кода с текстовыми данными в 50МБ до 15 мин.


 
Ega23 ©   (2009-08-27 11:56) [1]

сохраняй напрямую, это полюбому бастрее будет
http://www.postgresql.org/docs/8.4/static/sql-copy.html


 
Ega23 ©   (2009-08-27 11:58) [2]

Если же так необходимо TDataSet использовать, то я бы такой шаблон посоветовал:

with DataSet do
begin
 DisableControls;
 try
   First;
   while not Eof do
   begom
     // Тут сохраняем очередной рекорд в файл
     Next;
   end;
 finally
   EnableControls;
 end;
end;


 
Vitalts   (2009-08-27 12:03) [3]


> сохраняй напрямую, это полюбому бастрее будет
> http://www.postgresql.org/docs/8.4/static/sql-copy.html

О_О, именно это я и искал :)
Попробую, а то было хотел уже разбивать запрос на несколько тредов, потом собирать данные с тредов в кучу


 
Ega23 ©   (2009-08-27 12:05) [4]


> О_О, именно это я и искал :)


Я тебе бы вообще порекомендовал взять и весь этот хелп прочитать. Там с вдумчивым чтением и пробой некоторых особенностей языка - дня на 2-3.
Зато потом будешь иметь хотя бы представления о возможностях + примерно где искать.


 
Vitalts   (2009-08-27 12:09) [5]

читаю Дж. Уорсли, Дж. Дрейк "PostgreSQL для профессианалов", но задачи идут быстрее моего чтения :(


 
Vitalts   (2009-08-27 12:20) [6]

Появилась новая загвоздка
Нет прав на [b]copy[/b] таблицы (и не даст мне их никто)
Нет прав на запись в файл "c:/test.txt"


 
Медвежонок Пятачок ©   (2009-08-27 12:47) [7]

Нет прав на запись в файл "c:/test.txt"

Пиши в файл   c:/test1.txt


 
Vitalts   (2009-08-27 13:00) [8]


> Пиши в файл   c:/test1.txt

Дык "c:/test.txt" тоже не существует :)
Полюбому, даже если с правами на запись в локаль разберусь, первый пункт мне не побороть.


 
Ega23 ©   (2009-08-27 13:08) [9]

Создай временную таблицу, в неё селект из исходной, из временной - copy


 
Vitalts   (2009-08-27 13:29) [10]


> Создай временную таблицу, в неё селект из исходной, из временной
> - copy


С той базы мне только селектить можно, никаких copy и тем более insertoв.
Можно конечно создать на локальном серве временную и туда селектить с исходной, но к чему такие грабли, ежели можно вытаскивать данные напрямую.


 
Ega23 ©   (2009-08-27 14:05) [11]

Тогда [2]



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2011.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
2-1287812607
Илья2
2010-10-23 09:43
2011.01.16
Вызов не kernel32.dll функций из DllEntryPoint


2-1287569988
Alik
2010-10-20 14:19
2011.01.16
Не могу очистить буфер после компрессии методами Zlib


2-1287920194
George
2010-10-24 15:36
2011.01.16
Индикатор растягиваемости формы


15-1285734450
И. Павел
2010-09-29 08:27
2011.01.16
Можно ли использовать невизуальные компоненты в др. потоке?


3-1251359321
Vitalts
2009-08-27 11:48
2011.01.16
Сохранение больших объемов данных в файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский