|
|
|
Как компактить extended файлы Btrieve
|
|||
|---|---|---|---|
|
#18+
Всем добрый день ! (до этого 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. Или вообще нужно компактить совсем по-другому ? Заранее спасибо, Дмитрий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 11:58 |
|
||
|
Как компактить extended файлы Btrieve
|
|||
|---|---|---|---|
|
#18+
Ситуация 1 может быть обусловлена тем, что выгрузка проводилась в тот момент, когда шла процедура создания новой записи. Другой случай - стоит автоинкрементальный индекс, соответвенно при загрузке в установленную структуру начинаеться противоречие между тем значением, которое надо засунуть из старого файла и тем, которое хочет выдать сервак. 2 вопрос: структура словоря описывает размещение файла и размещение файла-продолжения. Т.е. после восстановления файл x.^01 становиться неактивным и его при желании можно убрать из папки. 3. Я бы выгрузил в dbf, sql БД, дропнул-бы записи в Btrieve таблице и только потом запускал-бы butil-load.Потом втянул бы данные через ODBS, или другим способом. В это случае, их по крайней мере можно проверить на уникальность первичного ключа, дело в том, что в ранних версиях на ряд исключений могло так получиться, что вставилась запись с неуникальным ключем. При этом работать то она не мешает, а вот втянуть две таких записи - не даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=56&msg=32728531&tid=2016707]: |
0ms |
get settings: |
7ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 360ms |

| 0 / 0 |
