2016-12-01 56 views

回答

2

這是

copy structure to newfile 

,或者

copy to newfile for .f. 
+1

你可能需要CDX子句以保留索引(COPY TO newfile CDX)。 – LAK

3

有一個在VFP沒有單一的命令,將一切複製一個現有的表可能有。你必須定義你的需求,你現有的表有什麼好的。

例如,對於以數據簡單的複製,你可以使用:

copy to NewTableName with cdx [Database dbName [Name tableNameInNewDb]] 

這將複製結構,索引和現有的數據一起。但是,它不會複製其他數據庫級別的屬性(如果有)。您需要爲其他人使用cursorgetprop()\ cursorsetprop(),dbgetprop()\ dbsetprop()。

執行完整副本的一種方法是首先使用(home()+'tools \ gendbc \ gendbc.prg')獲取數據庫和表創建的編程版本,然後編輯新的生成代碼表(也可以附加舊的代碼)。

祝您最初解釋我們是什麼,你說「拷貝將無法正常工作」的意思。

PS:我注意到你的問題標題說:「做一個空白的複製」。那麼你可能想要使用:

copy to NewTableName with cdx for .F. 

它會複製結構和索引而不是數據。其他缺點仍然適用。如果您並不需要索引然後simplier方法是:

select * from sourceTable where .F. into table targetTable 

編輯:由於LAK指出,使用時間,而不是用於將是對大表速度更快:

copy to NewTableName with cdx while .F. 
+0

您可能會想要使用CDX WHILE .F複製到新表。 (不是.F,這將需要很長的時間在桌子上有很多的記錄 - 我只是3.8M紀錄試圖在一個DBF,而是瞬間的,FOR花了約10分鐘...)。 – LAK

+1

COPY STRUCTURE TO newtable CDX也可用。我想我以前用過這個。 – LAK

+0

@LAK,那麼你的表格有問題。它不應該需要10分鐘或甚至超過10秒,僅3.8米的記錄(我測試反正花了4.7秒爲3720093分的記錄。不過,您使用權,而將瞬間(其實我從來不會想使用COPY TO或COPY STRUCTURE,我會在代碼中這樣做 - 實際上我有一個實用程序爲表結構和索引創建一個表,並從這些信息重新創建一個表。 –