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

时间:2008-08-13 19:51:02

标签: database foxpro

我有一些SQL Server DTS包从FoxPro数据库导入数据。直到最近这个工作正常。现在,从其中一个FoxPro表导入数据的脚本会将大约470,000条记录炸入导入。我只是将数据拉入一个具有可空varchar字段的表中,所以我认为它必须是一个奇怪/损坏的数据问题。

您会使用哪些工具来追踪这样的问题?

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

  

源列1('field1')的数据不可用。您的提供商可能要求所有Blob列都位于源结果集中最右侧。

此表中不应包含任何blob列。


感谢您的建议。我不知道这是否是一个腐败问题。我刚开始从我的MSDN订阅下载FoxPro,所以我会看看是否可以打开表格。 SSRS打开表,它只是在运行所有记录之前窒息。我只想弄清楚哪个记录存在问题。

6 个答案:

答案 0 :(得分:4)

Cmrepair是一个出色的免费软件,可以修复损坏的.DBF文件。

答案 1 :(得分:1)

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

此外,

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

在470,000条记录中,您可能需要检查是否接近FoxPro表大小的2千兆字节限制。根据我的理解,记录仍然可以存在,但在2 gig点之后变得无法访问。

答案 4 :(得分:0)

@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

等。

答案 5 :(得分:0)

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

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

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

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

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

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