powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Использование утилиты dbload
9 сообщений из 9, страница 1 из 1
Использование утилиты dbload
    #36824211
Lyudik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Мне необходимо в программе, написанной на Delphi, загрузить данные из файлика в таблицу Informix. При закачке данных в цикле уходит много времени, так как обрабатывается более 15 000 записей. Вроде как для этих целей можно использовать утилиту dbload, вот только не знаю, как ею пользоваться.

Подскажите, пожалуйста, как пользоваться утилитой dbload?

Заранее большое спасибо.
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824235
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код в студию.

Кстати много времени это сколько? Я программой на делфи 200 тыс за 1,5 мин. грузил в информикс. Это быстро или долго?
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824291
Lyudik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код загрузки в цикле
...
Dbf1.First;
While not Dbf1.Eof do
begin
quLoadData.SQL.Clear;
quLoadData.SQL.Text:= 'insert into provision_new_serv_main (поле1, поле2, поле3, поле4, поле5, поле6, поле7)'
+' values ('
+Dbf1.FieldByName('поле1').AsString+','
+''''+Dbf1.FieldByName('поле2').AsString+''','
+''''+Dbf1.FieldByName('поле3').AsString+''','
+''''+Dbf1.FieldByName('поле4').AsString+''','
+''''+Dbf1.FieldByName('поле6').AsString+''','
+''''+Dbf1.FieldByName('поле7').AsString+''''
+')';
quLoadData.ExecSQL;
Dbf1.Next;
end;
...

загрузка идет приблизительно 10-15 минут
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824310
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самая очевидная ошибка, непрепаренный запрос.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 //quLoadData.SQL.Clear;  не нужно перед Text:= 
quLoadData.SQL.Text:= 'insert into provision_new_serv_main (поле1, поле2, поле3, поле4, поле5, поле6, поле7)'
+' values (:поле1, :поле2, :поле3, :поле4, :поле5, :поле6, :поле7)';
quLoadData.Prepare;

 While   not  Dbf1.Eof  do 
 begin 
quLoadData.Params[ 0 ] := Dbf1.FieldByName('поле1').AsString;
quLoadData.Params[ 1 ] := Dbf1.FieldByName('поле2').AsString;
quLoadData.Params[ 2 ] := Dbf1.FieldByName('поле3').AsString;
quLoadData.Params[ 3 ] := Dbf1.FieldByName('поле4').AsString;
quLoadData.Params[ 4 ] := Dbf1.FieldByName('поле6').AsString;  //поле 5 потерялось? 
quLoadData.Params[ 5 ] := Dbf1.FieldByName('поле7').AsString;
quLoadData.ExecSQL;
Dbf1.Next;
 end ;
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824314
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати если закоментировать execsql вы узнаете сколько времени из 10 мин. уходит на чтение dbf
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824491
Lyudik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет.
Теперь загрузка идет быстрее. 17 335 записей загружаются около 3-х минут, при этом на чтение dbf файла уходит 1 секунда :)
Хотелось бы, чтобы данные загружались еще быстрее.
Преобразование данных dbf файла в unl файл происходит в программе также за 1 с.
код
...
Var Buffer: string;
ListOut: TStringList;
...
While not Dbf1.Eof do
begin
Buffer:= Dbf1.FieldByName('поле1').AsString + '|' +
Dbf1.FieldByName('поле2').AsString + '|' +
Dbf1.FieldByName('поле3').AsString + '|' +
Dbf1.FieldByName('поле4').AsString + '|' +
Dbf1.FieldByName('поле5').AsString + '|' +
Dbf1.FieldByName('поле6').AsString + '|';
ListOut.Add(Buffer);
Dbf1.Next;
end;
ListOut.SaveToFile(UnlPath + 'file.unl');

и я думаю, что если есть возможность использовать утилиту dbload, то при ее использовании данные из файла формата unl в таблицу Informix будут загружаться быстрее :) (уверенности в этом нет, но попробовать можно было бы)
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36824742
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LyudikПодскажите, пожалуйста, как пользоваться утилитой dbload?
А что мешает посмотреть в доку по вашей версии ?
Есть конкретные вопросы или просто ничего не читали ?
http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp - это информация по 11.5
В поле поиска задаете dbload и получите массу ссылок на нужные разделы, от синтаксиса до советов по применению.
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36825473
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
утилитой dbload не удастся воспользоваться скорее всего, она только без пароля умеет ходить
берите dbaccess и команды connect и load
...
Рейтинг: 0 / 0
Использование утилиты dbload
    #36827513
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lyudik
Хотелось бы, чтобы данные загружались еще быстрее.

Может индексы тормозят и их временно отключить?
Код: plaintext
1.
2.
3.
4.
set indexes  for provision_new_serv_main  disabled;
<загрузка>
set indexes  for provision_new_serv_main  enabled;
update statistics for table provision_new_serv_main;

Может есть ненужные триггеры?

А может журналирование мешает?
Код: plaintext
1.
2.
3.
4.
alter table provision_new_serv_main type raw;
<загрузка>
alter table provision_new_serv_main type standard;
update statistics for table provision_new_serv_main;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Использование утилиты dbload
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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