2014-07-27 4 views
0

50GB 테이블 table1의 데이터를 동일한 데이터베이스의 다른 100GB 테이블 table2에 삽입해야합니다. table1의 열은 모두 varchar(50)이고 table2의 열은 intfloat입니다.50GB 테이블의 데이터를 다른 100GB 테이블에 삽입

table1: non clustered primary key 

    id1 id2 value   -- all types are varchar(50) 
    242 8965 8974202.87412 

table2: id1 id2 are clustered primary key 

    id1 id2 value   -- id1 and id2 types are int, value is float 
    257 872 9826531.889 

내 코드 :

INSERT INTO [my_db].[dbo].[table2] 
SELECT Cast(a.id1 AS INT), 
     Cast(a.id2 AS INT), 
     Cast(a.value AS FLOAT) 
FROM [my_db].[dbo].[table1] AS a 

table2에 삽입 된 데이터가 table1에서와 같은 것인가? 당신이 표를 확인해야합니다

답변

0

하지 않을 경우 삽입 표 2 할 중복 키 ID1, ID2 있습니다.

SSIS를 사용하지 않으려면 변환을 시작하기 전에 모든 인덱스와 외래 키 및 제약 조건 및 트리거를 삭제 한 다음 생성하는 것이 좋습니다.

또한 시작 변환 확인하기 전에 표에 기록을 복제 한 후 표 2로 표에서 데이터를 저장하기 위해 다음과 같은 쿼리를 사용 :

INSERT INTO [my_db].[dbo].[table2] 
SELECT cast(a.id1 AS INT), cast(a.id2 AS INT), cast(a.value as float) 
FROM [my_db].[dbo].[table1] as a 
LEFT JOIN [my_db].[dbo].[table2] AS b ON b.id1 = a.id1 
             AND b.id2 = a.id2 
WHERE b.id1 IS NULL 
0

는 삽입 중복 더 나은 성능을 위해 데이터를 변환하기 위해 그 사용 SSIS를 제안

관련 문제