我在FoxPro中的dbf文件中有60,000條記錄。我想將它分成每個20,000條記錄(20000 * 3 = 60,000)。如何拆分FoxPro記錄?
我該如何做到這一點?
我是FoxPro新手。我正在使用Visual FoxPro 5.0。
在此先感謝。
我在FoxPro中的dbf文件中有60,000條記錄。我想將它分成每個20,000條記錄(20000 * 3 = 60,000)。如何拆分FoxPro記錄?
我該如何做到這一點?
我是FoxPro新手。我正在使用Visual FoxPro 5.0。
在此先感謝。
您必須使用COPY
命令時,確保你已經開始對下一個記錄發出SKIP
命令。
USE MyTable
GO TOP
COPY NEXT 20000 TO NewTable1
SKIP 1
COPY NEXT 20000 TO NewTable2
SKIP 1
COPY NEXT 20000 TO NewTable3
您可以直接從第一表中選擇:
SELECT * from MyBigTable INTO TABLE SmallTable1 WHERE ID < 20000
SELECT * from MyBigTable INTO TABLE SmallTable2 WHERE ID BETWEEN (20000, 39999)
SELECT * from MyBigTable INTO TABLE SmallTable3 WHERE ID > 39999
,如果你想要更多的控制,但是,或者你需要處理數據,您可以使用XBASE代碼,像這樣:
SELECT MyBigTable
scan
scatter name oRecord memo
if oRecord.Id < 20000
select SmallTable1
append blank
gather name oRecord memo
else if oRecord.Id < 40000
select SmallTable2
append blank
gather name oRecord memo
else
select SmallTable3
append blank
gather name oRecord memo
endscan
自從我使用VFP以來,我已經有一段時間了,並且我沒有它,所以對於任何語法錯誤都表示歉意。
use in 0 YourTable
select YourTable
go top
copy to NewTable1 next 20000
copy to NewTable2 next 20000
copy to NewTable3 next 20000
託德的建議將工作,如果你不在乎記錄如何拆分。如果你想根據他們的內容劃分它們,你會想要做一些類似斯圖爾特的第一個建議,儘管他的確切答案只有在記錄的ID從1到60,000的順序纔有效。
這裏的最終目標是什麼?爲什麼把桌子分開?
添馬艦
如果你想基於創紀錄的數字分裂,試試這個:
SELECT * FROM table INTO TABLE tbl1 WHERE RECNO() <= 20000
SELECT * FROM table INTO TABLE tbl2 WHERE BETWEEN(RECNO(), 20001, 40000)
SELECT * FROM table INTO TABLE tbl3 WHERE RECNO() > 40000
您需要的COPY之間發出SKIP 1命令,命令將記錄指針前進1分的紀錄。用你的答案,NewTable1的最後一條記錄與NewTable2的第一條記錄相同。 – DaveB 2011-03-25 17:12:03