2011-03-24 2 views
1

FoxPro의 dbf 파일에 60,000 개의 레코드가 있습니다. 나는 그것을 20,000 개의 레코드 (20000 * 3 = 60,000)로 나누고 싶다.FoxPro 레코드를 분할하는 방법?

어떻게하면됩니까?

저는 FoxPro를 처음 사용합니다. Visual FoxPro 5.0을 사용하고 있습니다.

미리 감사드립니다.

직접 첫 번째 테이블에서 선택할 수 있습니다

답변

3

당신은 SKIP 명령을 실행해야합니다. 당신이 기록적인 숫자에 따라 분할 원한다면

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

:

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 
: 당신이 더 많은 것을 원하는 경우에 제어하지만, 또는 데이터를 조작 할 필요가

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 코드, 뭔가를 사용할 수 있습니다

VFP를 사용한 이후로 시간이 지났으며 여기에는 구문 분석 오류에 대한 사과가 있습니다.

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

당신은 앞으로 1 개 레코드를 레코드 포인터를 이동 명령에 COPY 사이에 SKIP 1 명령을 실행해야합니다. 답으로 NewTable1의 마지막 레코드가 NewTable2의 첫 번째 레코드와 동일하게됩니다. – DaveB

1

레코드 분리 방법에 신경 쓰지 않으면 Todd의 제안이 작동합니다. 내용에 따라 분류하고 싶다면 스튜어트의 첫 번째 제안과 같은 일을하고 싶을 것입니다. 정확한 답변은 레코드의 ID가 1에서 6 만까지 순서대로 실행되는 경우에만 작동합니다.

여기 궁극의 목표는 무엇입니까? 왜 테이블을 나눕니 까? 다음 레코드에서 시작되어 있는지 확인하기 위해 COPY 명령을 사용할 때

다말은

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