![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перенос данных из файла в базу INTERBASE [D6, IB6.x, dBase, FoxPro]
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]А если Луна на небе полная, то как идет копирование?