powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как компактить extended файлы Btrieve
2 сообщений из 2, страница 1 из 1
Как компактить extended файлы Btrieve
    #32727639
dk007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день !
(до этого Btrieve-ом не занимался, этот вопрос вызван вынужденной необходимостью, так что вполне возможно вопросы чайниковые).
Версия PSQL V8.5, Windows 2000.
Есть файл данных, разбитый в силу ограничения в 2Gb на 2 - x.btr и x.^01. Рельно занято чуть-чуть (много перенесли в архив), хочется пожать.
В мануале отыскал раздел про утилиту Maintenance, секция Compacting Btrieve data files.
Идея такая
1. Создаем новый файл x_1.btr по структуре исходного (File Information Editor: Load Information, Create File)
2. Выкладываем содержимое исходного файла во внешний (x.btr->x.out)
3. Загружаем внешний файл в новый x.out->x_1.btr
4. Переименовываем новый в исходный (этого в мануале не было, додумал сам)

При выполнении 3. возникает ошибка MicroKernel error=5.The record has a key field containing duplicate key value.
То же происходит при загрузке с помощью butil -load.

Теперь собственно вопросы:
1. Это сообщение об ошибке - означает ли оно, что нужно при создании копии как-то специально заботиться об индексах ?
2. Шаг 4 - (если все-таки удастся загрузить x.out в x_1.btr)- если просто заменить x.btr на x_1.btr, куда денется x.^01 ? видимо как-то в словаре данных нужно будет отразить тот факт, что файл теперь не в двух физических файлах, а в одном ?
3. Или вообще нужно компактить совсем по-другому ?

Заранее спасибо, Дмитрий.
...
Рейтинг: 0 / 0
Как компактить extended файлы Btrieve
    #32728531
Ситуация 1 может быть обусловлена тем, что выгрузка проводилась в тот момент, когда шла процедура создания новой записи. Другой случай - стоит автоинкрементальный индекс, соответвенно при загрузке в установленную структуру начинаеться противоречие между тем значением, которое надо засунуть из старого файла и тем, которое хочет выдать сервак.
2 вопрос: структура словоря описывает размещение файла и размещение файла-продолжения. Т.е. после восстановления файл x.^01 становиться неактивным и его при желании можно убрать из папки.
3. Я бы выгрузил в dbf, sql БД, дропнул-бы записи в Btrieve таблице и только потом запускал-бы butil-load.Потом втянул бы данные через ODBS, или другим способом. В это случае, их по крайней мере можно проверить на уникальность первичного ключа, дело в том, что в ранних версиях на ряд исключений могло так получиться, что вставилась запись с неуникальным ключем. При этом работать то она не мешает, а вот втянуть две таких записи - не даст.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как компактить extended файлы Btrieve
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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