3

FoxPro データベースからデータをインポートする SQL Server DTS パッケージがいくつかあります。これは最近まで正常に機能していました。現在、FoxPro テーブルの 1 つからデータをインポートするスクリプトは、約 470,000 レコードを大量にインポートします。Null 可能な varchar フィールドを持つテーブルにデータをプルしているだけなので、データの奇妙/破損の問題であるに違いないと考えています。

このような問題を追跡するには、どのツールを使用しますか?

参考までに、これは私が得ているエラーです:

ソース列 1 ('field1') のデータは利用できません。プロバイダーによっては、すべての Blob 列がソース結果セットの右端にあることが必要な場合があります。

このテーブルには BLOB 列があってはなりません。


提案をありがとう。確かに破損の問題かどうかはわかりません。MSDN サブスクリプションから FoxPro のダウンロードを開始したばかりなので、テーブルを開くことができるかどうかを確認します。SSRS はテーブルを開き、すべてのレコードを実行する前にチョークします。問題が発生しているレコードを特定しようとしています。

4

6 に答える 6

4

Cmrepairは、破損した .DBF ファイルを修復する優れたフリーウェア ユーティリティです。

于 2008-08-13T20:34:58.887 に答える
1

私の会社では、Foxpro を使用してかなりの量のデータを保存しています... 私の経験では、データの破損は非常に明白で、そもそもテーブルを開くことができません。テーブルを開くための foxpro のコピーはありますか?

于 2008-08-14T01:10:07.053 に答える
1

470,000 レコードで、FoxPro テーブル サイズの 2 ギガバイト制限に近づいているかどうかを確認する必要がある場合があります。私が理解しているように、レコードはまだそこにある可能性がありますが、2ギガポイント以降はアクセスできなくなります.

于 2008-08-14T15:28:39.280 に答える
1

既存のデータを新しいテーブルにコピーするだけの小さなプログラムを作成してみましたか?

また、

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

于 2008-08-13T19:58:04.047 に答える
0

@ランス:

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

于 2008-08-14T12:39:24.643 に答える
0

私のサイト (www.shershahsoft.com) の修復データベースを無料で使用してください (常に無料です)。

このプログラムは、破損した Foxpro/FoxBase/Dbase ファイルを修復するように設計されています。プログラムは非常に高速です。1 GB のテーブルを 1 分以内に修復します。

ファイルとフォルダをプログラムに割り当てることができます。プログラムを起動すると、破損したすべてのファイルがマークされ、[修復] または [チェックして修復] ボタンをクリックすると、破損したすべてのファイルが修復されます。さらに、実際のデータが存在するフォルダーに「CorruptData」フォルダーを作成し、そこに破損したファイルのコピーを保持します。

ファイルを保存するドライブでは、必ず Windows CheckDsk を実行してください。原因は、レコードがテーブルにコピーされているときに電源障害が発生した場合、CheckDsk 中に Windows がファイルに変換する失われたクラスターが存在することです。その後、RepairDatabases が作業を行います。

テーブルを修復する多くの有料および無料のプログラムを使用してきましたが、そのようなプログラムはすべて、曖昧な文字を含む余分なレコードをテーブルに残します (そして、時間もかかります)。プログラマーは、そのようなレコードを手動で見つけて削除する必要があります。しかし、Repair Databases は実際には元のレコードを復元するため、それ以上の操作は必要ありません。必要なアクションは、ファイルのインデックスを再作成することだけです。

修復プロセスでは、ファイルを開くダイアログが表示され、インデックスを含むテーブルのコンパクト インデックス ファイルを探すように求められることがあります。その時点でダイアログをキャンセルをクリックできます。テーブルは修復されますが、後でファイルのインデックスを再作成する必要があります。(このダイアログは、破損したインデックスの数に応じて数回表示される場合があります。)

于 2012-12-19T19:31:59.810 に答える