Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экспорт данных из базы Interbase в скрипт средствами Delphi


mvs ©   (2006-03-06 17:43:00) 

Добрый день
Хочу написать небольшую функцию экспорта данных из базы Interbase в скрипт. Пошел вначале самым простым путем
1. Получаю все таблицы
2. Экспортирую данные из очередной таблицы TableName
Сначала
ibq.sql.text := select * from tablename
Потом
ff := false;
Fieldsstr := '';
while not ibq.Eof do begin
ValuesStr := '';
for i := 0 to ibq.FieldCount - 1 do begin
if ibq.Fields[i].FieldKind <> fkData then continue;
// Простейшая функция получения значания поля, а если это блоб, то игнорировать
if not GetFieldValue(ibq.Fields[i],0,ValStr) then continue;
if not ff then begin
if Fieldsstr = '' then Fieldsstr := ibq.Fields[i].FieldName
else Fieldsstr := Fieldsstr + ',' + ibq.Fields[i].FieldName;
end;
if Valuesstr = '' then Valuesstr := ValStr
else Valuesstr := Valuesstr + ',' + ValStr;
end;
// конец for i
if not ff then begin
Fieldsstr := 'insert into ' + tablename + ' (' + Fieldsstr + ')';
ff := true;
end;
Valuesstr := ' values (' + Valuesstr + ')';
OutStr := OutStr + Fieldsstr + Valuesstr + ';' + CRLF;
ibq.Next;
end;
Возвращаю OutStr типа string

ПРОБЛЕМА в том, что на больших таблицах эта функция очень долгая. Наверняка есть возможность все УСКОРИТЬ. Например, в IBExpert'е экспорт идет гораздо быстрее. Очень хочется посмотреть его алгоритм или нечто подобное.


Fay   (2006-03-06 18:30:00) [1]

юзай TStringList


Наверх

Титульная страница Поиск, карта сайта Написать письмо