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

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

Перенос данных из файла в базу INTERBASE [D6, IB6.x, dBase, FoxPro]


Страницы:   1 2

nike_fest ©   (2004-05-28 10:38:00) 

Уважаемые программисты, прошу помощи или разъясните ситуацию. Из файла *.dbf построчно переношу данные в таблицу Interbase. Один компонент TTable нацелен на файл *.dbf другой через Database соответственно на аналогичную таблицу в базе INTERBASE. Открываю транзакцию, затем команда Table.INSERT, далее присваиваю последовательно по полям данные и в конце команда POST. При достижении конца файла DBF завершаю транзакцию. Изменения не кеширую. Так вот если таблица не большая все нормально, а если записей много, то все зависает, причем примерно на одном и тем же месте. Записывает около 700-800 записей и все. Никаких ошибок, процесс просто останавливается. И еще такие нюансы. Проблем таких не возникает если включено кэширование изменений, и если таблица INTERBASE пуста


Tomkat   (2004-05-28 11:22:00) [21]

Могу посоветовать тулзу IntrBase DataPump , встраивается в IBExpert , как внешний модуль , для переноса данных ...


goozman   (2004-05-28 11:11:00) [22]

А не кажется ли Тебе, что глючит InterBase! Попробуй переустновить!


Reindeer Moss Eater   (2004-05-28 10:59:00) [23]

Коммитить как советуют, а принцип либо все либо ничего реализовать логикой программы, а не транзакциями сервера.


Соловьев   (2004-05-28 10:56:00) [24]


> [3] nike_fest   (28.05.04 10:49)

Переходи значит на ФБ 1.5 - там есть классная фишка savepoint start;
сохраняешь точку отката в начале и и все, комить себе каждые 500 записей и , а если надо сделать откат - возвращаешся к точке - rollback to start;


Johnmen   (2004-05-28 10:55:00) [25]

>nike_fest

Для ускорения массовой вставки имеет смысл отключить индексы для таблицы-рецепиента... (во как загнул :))


Tomkat   (2004-05-28 10:53:00) [26]

Поробуй коммитить транзакцию после каждой вставки, использовать параметрический запрос вставки и использовать не IBTable, а IBDataSet...


slgeo   (2004-05-28 10:52:00) [27]


> to nike_fest   (28.05.04 10:49) [3]

Есть ли триггеры на таблицу? Если есть, то хорошо бы привести их код.


nike_fest   (2004-05-28 10:49:00) [28]

Johnmen, Пробовал через квери - тоже самое, а COMMIT не очень хочется, потому что надо писать либо все либо ничего.


Johnmen   (2004-05-28 10:44:00) [29]

1. Просто запрос INSERT INTO ... в таблицу IB БД в цикле по всем записям из TTable.
2. COMMIT через каждые ~500 вставок.


Reindeer Moss Eater   (2004-05-28 10:41:00) [30]

А если Луна на небе полная, то как идет копирование?


Страницы:   1 2

Наверх

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