Какие инструменты обработки данных FoxPro я могу использовать для поиска поврежденных данных? - PullRequest
3 голосов
/ 13 августа 2008

У меня есть несколько пакетов SQL Server DTS, которые импортируют данные из базы данных FoxPro. До недавнего времени это работало нормально. Теперь скрипт, который импортирует данные из одной из таблиц FoxPro, добавляет в импорт около 470 000 записей. Я просто перетаскиваю данные в таблицу с обнуляемыми полями varchar, так что я думаю, что это странная проблема с поврежденными данными.

Какими инструментами вы бы воспользовались, чтобы отследить такую ​​проблему?

К вашему сведению, это ошибка, которую я получаю:

Данные для исходного столбца 1 ('field1') недоступны. Ваш поставщик может потребовать, чтобы все столбцы BLOB-объектов были самыми правыми в исходном наборе результатов.

В этой таблице не должно быть столбцов BLOB-объектов.


Спасибо за предложения. Я не знаю, если это проблема коррупции наверняка. Я только начал загружать FoxPro из моей подписки MSDN, так что я посмотрю, смогу ли я открыть таблицу. SSRS открывает таблицу, она просто задыхается, прежде чем пропустить все записи. Я просто пытаюсь выяснить, с какой записью возникли проблемы.

Ответы [ 6 ]

4 голосов
/ 14 августа 2008

Cmrepair - отличная бесплатная утилита для восстановления поврежденных файлов .DBF.

1 голос
/ 14 августа 2008

При 470 000 записей вы можете проверить, приближаетесь ли вы к 2-гигабайтному пределу размера таблицы FoxPro. Насколько я понимаю, записи все еще могут быть там, но становятся недоступными после точки 2 гигабайта.

1 голос
/ 14 августа 2008

Моя компания использует Foxpro для хранения довольно большого количества данных ... По моему опыту, повреждение данных очень очевидно, поскольку таблица не открывается в первую очередь. У вас есть копия foxpro для открытия таблицы?

1 голос
/ 13 августа 2008

Вы пытались написать небольшую программу, которая просто копирует существующие данные в новую таблицу?

Кроме того,

http://fox.wikis.com/wc.dll?Wiki~TableCorruptionRepairTools~VFP

0 голосов
/ 19 декабря 2012

Используйте базы данных восстановления с моего сайта (www.shershahsoft.com) БЕСПЛАТНО (и всегда БЕСПЛАТНО).

Я разработал эту программу для восстановления поврежденных файлов Foxpro / FoxBase / Dbase. Программа очень быстрая. Он восстановит 1 ГБ таблицы менее чем за минуту.

Вы можете назначать файлы и папки программе. Когда вы запустите программу, она отметит все поврежденные файлы и, нажав кнопку «Восстановить» или «Проверить и восстановить», восстановит все поврежденные файлы. Кроме того, он создаст папки «CorruptData» в папках, в которых существуют фактические данные, и сохранит там копии поврежденных файлов.

Следует помнить одну вещь: всегда запускайте Windows CheckDsk на дисках, на которых хранятся файлы. Причина, когда записи копируются в таблицу и происходит сбой питания, существуют потерянные кластеры, которые Windows преобразует в файлы во время CheckDsk. После этого RepairDatabase сделает всю работу за вас.

Я использовал много платных и бесплатных программ, которые восстанавливают таблицы, но все такие программы оставляют в таблицах дополнительные записи с символами-заглушками (и они тоже отнимают много времени). Программист должен найти и удалить такие записи вручную. Но Ремонт баз данных фактически восстанавливает исходные записи, вам не нужно никаких дальнейших действий. Единственное, что вам нужно, это переиндексировать ваши файлы.

В процессе восстановления иногда появляется диалог открытия файла, который просит найти файл компактного индекса для таблицы с индексами. В этот момент вы можете нажать кнопку «Отмена» диалогового окна, таблица будет восстановлена, однако позже вам потребуется переиндексировать файл. (этот диалог может появляться несколько раз в зависимости от количества поврежденных индексов.)

0 голосов
/ 14 августа 2008

@ Lance:

если у вас есть доступ к окну командной строки Visual FoxPro, введите:

SET TABLEVALIDATE 11
USE "YourTable" EXCLUSIVE    && If the table is damaged VFP must display an error here
PACK    && To reindex the table and deleted "marked" records
PACK MEMO    && If you have memo fields

После этого структура таблицы должна быть действительной, если вы хотите увидеть поля с недействительными данными, вы можете попробовать:

SELECT * FROM YourTable WHERE EMPTY(YourField)   && All records with YourField empty
SELECT * FROM YourTable WHERE LEN(YourMemoField) > 200   && All records with a long memo field, there can be corrupted data

и т.д..

...