powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
14 сообщений из 14, страница 1 из 1
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36098871
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня!

Время от времени происходит такой неприятный момент, когда в таблице с уникальным полем появляется дублирующая запись (происхождение мне неизвестно). У этой таблице имеется ряд индексов. Которые после переиндексации либо пропадают. И только тогда обнаруживается что в таблице есть неуникальная запись.

Хотелось бы придумать механизм восстановления базы. Например, мы знаем что в контейнере DBC можно узнать какие есть поля, индексы и представления. Также в контейнере есть поле Property, в котором на непонятном языке что-то написано, возможно то, что необходимо, но чаще я там вижу квадратики и как их распознать - не знаю. Так вот, как пути решения создания механизма пока что вижу 2:
1. Хранить отдельно копию файла dbc, и при порче используемого, подставлять сохраненный. Тогда ерунда может появиться если после модификации таблицы, вовремя не был скопирован этот dbc, чтобы он был идентичен.
2. Хранить отдельно копию файла dbc, и при порче используемого, вытаскивать список индексов и востанавливать их, НО! :
2.1. - не всегда ведь имя индекса совпадает с именем поля
2.2. - как узнать тип индекса (primary, regular ....) ?
2.3. - как узнать все остальные характеристики индекса (на какие поля распространяется, если их не одно, и с каким ASC или DESC)?
2.4. - возможно еще что-то...

Если тема уже поднималась и не единожды, просьба - дайте ссылку.
Если нет, пожалуйста, помогите решить данную проблемму.
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36098876
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь, что-то я слишком много написал не того что надо, отклонился от основной идее в первом варианте, надо восстановить индексы в определенной таблице, а не базу.

спешка нужна при ловле блох... :)
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36098922
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вытащить можно так
Код: plaintext
1.
2.
3.
4.
use MyTable
for i =  1  to tagcount('MyTable')
	? tag('MyTable', i), key('MyTable',i)
endfor

Только это борьба с последствиями, а не решение проблемы.
По хорошему надо создавать/пересоздавать индексы в одном месте. Тогда набор индексов будет всегда одинаковый и описанной проблемы не возникнет.

PS Контейнер БД трогать не надо.
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36098960
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя уже давно с dbf не работаю , но насколько мой склероз мне не изменяет ,
вариант предложенный Dima T будет работать при "живых" таблицах и индексах.
В таких случаях и REINDEX отработает.
если же индекс или табличка "поломались" - то вытащить данные можно только из контейнера БД.
В папке с фоксом есть папочка Tools
в ней тоже папки
- Filespec - там проект с описанием структуры фоксовых репортов , форм , БД
если есть желание - можно самому написать программу , вытаскивающию нужную инфу
- GenDBC - за вас уже написали программу , которая позволяет получить инфу по БД и сохранить ее в виде текстового файла.
Можно посмотреть как вытаскиваеться описания и дописать таким образом , чтобы восстанавливало .
Ну ясное дело для всего этого нужен рабочий контейнер БД.
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36099004
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВытащить можно так
Код: plaintext
1.
2.
3.
4.
use MyTable
for i =  1  to tagcount('MyTable')
	? tag('MyTable', i), key('MyTable',i)
endfor

Только это борьба с последствиями, а не решение проблемы.
По хорошему надо создавать/пересоздавать индексы в одном месте. Тогда набор индексов будет всегда одинаковый и описанной проблемы не возникнет.

PS Контейнер БД трогать не надо.

Спасибо, теперь понятно как это все узнать (тип индекса, поле, asc/desc).
Но будет ли эта инфа видна при поломанных или пропавших индексах?
И как узнать значение Filter индекса?
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36099016
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ как узнать значение Filter индекса

Вы пытаетесь написать какую-то программу для восстановления индексов?
самый простой вариант - хранить пустой cdx файл,
в случае разрушения восстановить его вместо разрушенного и выполнить reindex,
это освободит Вас от необходимости написания какого-то сложного кода.
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36099048
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо, буду что-то мудрить...
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36101388
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шось ничего хорошего у меня не вышло с подменой cdx...
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36101495
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что получилось плохого?
в примере все хорошо.
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36101726
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимочто получилось плохого?
в примере все хорошо.
пасиба, так работает :)
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36102124
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только остался еще такой вот вопрос - как сделать cdx-файлы пустыми, чтоб потом "убивать" испорченные их подставлять свежие?
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36102126
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкак сделать cdx-файлы пустыми,

имеющуюся табличку нужной структуры с индексом,
которая уже заполнена скопируйте в темповый каталог,
запните, сохраните полученный пустой индексный файл как эталон
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36102164
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоавторкак сделать cdx-файлы пустыми,

имеющуюся табличку нужной структуры с индексом,
которая уже заполнена скопируйте в темповый каталог,
запните, сохраните полученный пустой индексный файл как эталон
ёлки, как все логично )))))
пасиб :)
...
Рейтинг: 0 / 0
Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
    #36102168
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда... 2250 табличек.... надо писать программу чтоб все это сделать...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вытащить всю инфу о фоксовской базе или полное восстановление таблиц?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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