关于数据库:我可以使用哪些 FoxPro 数据工具来查找损坏的数据?

关于数据库:我可以使用哪些 FoxPro 数据工具来查找损坏的数据?

What FoxPro data tools can I use to find corrupted data?

我有一些从 FoxPro 数据库导入数据的 SQL Server DTS 包。直到最近,这一切都很好。现在,从 FoxPro 表之一导入数据的脚本将大约 470,000 条记录轰炸到导入中。我只是将数据拉入带有可为空的 varchar 字段的表中,所以我认为这一定是一个奇怪/损坏的数据问题。

你会使用什么工具来追踪这样的问题?

仅供参考,这是我得到的错误:

Data for source column 1 ('field1') is not available. Your provider may require that all Blob columns be rightmost in the source result set.

此表中不应有任何 blob 列。

感谢您的建议。我不确定这是否是腐败问题。我刚开始从我的 MSDN 订阅中下载 FoxPro,所以我看看能不能打开表。 SSRS 打开表,在遍历所有记录之前它只是窒息。我只是想弄清楚哪个记录有问题。


Cmrepair 是一款出色的免费软件实用程序,可修复损坏的 .DBF 文件。


如果有 470,000 条记录,您可能需要检查一下是否接近 FoxPro 表大小的 2 GB 限制。据我了解,记录仍然可以在那里,但在 2 gig 点之后变得无法访问。


我的公司使用 Foxpro 来存储相当多的数据...根据我的经验,数据损坏非常明显,首先无法打开表。你有 foxpro 的副本来打开表吗?


您是否尝试过编写一个仅将现有数据复制到新表的小程序?

还有,

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


免费使用我网站 (www.shershahsoft.com) 上的修复数据库(并且永远免费)。

我设计了这个程序来修复损坏的 Foxpro/FoxBase/Dbase 文件。该程序非常快。它将在不到一分钟的时间内修复 1 GB 表。

您可以将文件和文件夹分配给程序。当您启动程序时,它将标记所有损坏的文件,并通过单击修复或检查并修复按钮,它将修复所有损坏的文件。此外,它将在实际数据所在的文件夹中创建一个文件夹"CorruptData",并将损坏文件的副本保存在那里。

请记住,始终在存储文件的驱动器上运行 Windows CheckDsk。原因,当正在将记录复制到表中并且发生电源故障时,存在丢失的簇,Windows 在 CheckDsk 期间将其转换为文件。之后,RepairDatabases 将为您完成这项工作。

我使用过许多修复表格的付费和免费程序,但是所有这些程序都会在表格中留下带有隐含字符的额外记录(而且它们也很耗时)。程序员需要手动查找和删除此类记录。但是,Repair Databases 实际上恢复了原始记录,您无需进一步操作。您需要的唯一操作是重新索引文件。

在修复过程中,有时会出现文件打开对话框,要求为具有索引的表定位紧凑索引文件。您可以在此时单击取消对话框,该表将被修复,但是,您稍后需要重新索引文件。 (此对话框可能会出现多次,具体取决于损坏索引的数量。)


@兰斯:

如果您可以访问 Visual FoxPro 命令行窗口,请键入:

1
2
3
4
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

这样做之后,表的结构必须是有效的,如果你想看到无效数据的字段,你可以试试:

1
2
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

等。


推荐阅读