如何拆分FoxPro记录?

时间:2011-03-24 12:18:43

标签: visual-foxpro foxpro

我在FoxPro的dbf文件中有60,000条记录。我想将它分成每20,000条记录(20000 * 3 = 60,000)。

我怎样才能做到这一点?

我是FoxPro的新手。我正在使用Visual FoxPro 5.0。

提前致谢。

5 个答案:

答案 0 :(得分:3)

使用SKIP命令时,必须发出COPY命令,以确保从下一条记录开始。

USE MyTable
GO TOP
COPY NEXT 20000 TO NewTable1
SKIP 1
COPY NEXT 20000 TO NewTable2
SKIP 1
COPY NEXT 20000 TO NewTable3

答案 1 :(得分:1)

如果您不关心如何拆分记录,Todd的建议将会奏效。如果你想根据他们的内容进行分割,你会想要做一些像斯图尔特的第一个建议,尽管他的确切答案只有在记录的ID按顺序从1到60,000时才有效。

这里的最终目标是什么?为什么要把桌子分开?

答案 2 :(得分:0)

您可以直接从第一张表中选择:

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已经有一段时间了,我在这里没有它,所以对任何语法错误道歉。

答案 3 :(得分:0)

use in 0 YourTable
select YourTable
go top
copy to NewTable1 next 20000
copy to NewTable2 next 20000
copy to NewTable3 next 20000

答案 4 :(得分:0)

如果您想根据记录号进行拆分,请尝试以下方法:

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