2012-05-10 2 views
1

table_one이라는 테이블이 있습니다. (7 밀) 행SQL Server - 특정 테이블에서 다른 테이블로 특정 행 집합 삽입

새 테이블 (table_two)에 0 - 1 밀을 삽입하고 동일한 테이블에 1 밀리미터 - 2 밀을 삽입하고 싶습니다.

SET ROWCOUNT 1000000 

어떻게 달성 할 수 있습니까? 삽입 할 행의 범위를 지정하는 방법이 있습니까? 당신이 시작을 얻을 기존 테이블에 ID를 끝낼 수있는 경우

+1

페이징에 사용할 수있는 'ID'또는 'DateTime' 열 또는 기타 항목이 있습니까? –

답변

2

당신은 row_number 사용할 수 있습니다

;with cte as (
    select 
     *, 
     row_number() over(order by some_field) as rn 
    from table_one 
) 
insert into table_two (fields) 
    select fields from cte 
    where rn < 1000000 
0

, 당신은 같은 것을 할 수 있습니다 : 당신은 이미 유용한 ID가없는 경우

INSERT INTO NewTable (...) 
SELECT ... FROM OldTable 
WHERE OldTableID BETWEEN @StartID AND @EndID 

, danihp의 솔루션을 사용 ROW_NUMBER()을 사용하십시오.

0

당신이 식별자의 범위가없는 경우 ROW_NUMBER() 사용하여 생성 할 수 있습니다 : 당신이 정확한 점점 관심이 있다면

with toinsert (
    select *, row_number() over (partition by NULL order by <whatever>) as rownum 
    from OldTable 
) 
insert into NewTable(...) 
    select ... from toinsert 
+2

당신은 어디 절을 잊어 버려! – danihp

0

을 행 수를 입력하면 TOP을 입력 할 수 있습니다.

insert into Table2 
select top 1000000 * 
    from Table1 
order by ... ID? or newid() if you want random rows. 
0

더 나은 전체 테이블을 bulk import format, splitting 텍스트 파일로 내보내기, 다음 bulk importing 여러 테이블에 7 개 정도 조각.

물론 원래 테이블에 SQL INSERT 작업을 수행 할 수있는 키가있을 수 있지만 게시하려면 질문에 제공되지 않은 정보가 필요합니다.

관련 문제