FoxProの既存のテーブルからすべての構造体/スキーマをコピーする方法はありますか?既存のテーブルから空白のコピーを作成
copy to
は、それは
copy structure to newfile
、あるいは、
copy to newfile for .f.
FoxProの既存のテーブルからすべての構造体/スキーマをコピーする方法はありますか?既存のテーブルから空白のコピーを作成
copy to
は、それは
copy structure to newfile
、あるいは、
copy to newfile for .f.
を動作しません。テーブルが持つかもしれない。要件を定義し、既存のテーブルが何を持っているかを定義する必要があります。
例えば、データとの単純なコピーのためにあなたが使用することができます。
copy to NewTableName with cdx [Database dbName [Name tableNameInNewDb]]
これは、インデックスと既存のデータとともに、構造をコピーします。ただし、他のデータベースレベルのプロパティがある場合はコピーしません。他の人には、cursorgetprop()\ cursorsetprop()、dbgetprop()\ dbsetprop()を使用する必要があります。
完全なコピーを行う1つの方法は、(home()+ 'tools \ gendbc \ gendbc.prg'を使用して)データベースとテーブル作成のプログラムバージョンを取得してから、 (そして古いものからコードを追加することもできます)。
あなたが最初に「コピーすることはできません」と言って何を意味するのかを願います。
PS:あなたの質問には「空のコピーを作る」というタイトルがあります。次に、使用することがあります:
copy to NewTableName with cdx for .F.
これは、構造とインデックスをコピーしますが、データはコピーしません。他の欠点は依然として適用される。あなたは、インデックスを必要としなかった場合は、simplierの方法は次のようになります。
select * from sourceTable where .F. into table targetTable
EDIT:
copy to NewTableName with cdx while .F.
既存のすべてをコピーするVFPには、単一のコマンドは、ありませんです
あなたはおそらくCOPY TO newtable WITH CDX WHILE .Fを望むでしょう。 (for .Fではなく、たくさんのレコードを持つテーブルで長い時間がかかるでしょう - 私はただの3.8MレコードのDBFで試してみたのですが、瞬間的でした、FORは約10分かかりました...)。 – LAK
newtable CDXへのコピー構造も機能します。私はこれを過去に使ったと思います。 – LAK
@ LAKの場合、テーブルに何か問題があります。単なる3.8 Mのレコードでは10分か10秒以上かかるはずはありません(私はとにかくテストし、3,720,093レコードで4.7秒かかりました)。しかし、あなたは瞬間的に使用していますが(実際にはCOPY TO実際には、テーブル構造とインデックス用のテーブルを作成するユーティリティと、その情報から再作成するユーティリティがあります)。 –
あなたがしたい:LAKは速く、大きなテーブルになる代わりに、FORのWHILEを使用して、指摘されたように索引を保持するためにCDX節を必要とするかもしれません(COPY TO newfile CDX)。 – LAK