2014-11-04 9 views
0

내 프로 그램은 두 테이블을 가져옵니다. T1 (A, B, C) 및 T2 (B, C, D) (테이블은 다른 SQL 서버에 있음). T2에는 추가 열 (D)과 누락 열 (A)가 있습니다.BCP (벌크 삽입)를 사용하여 다른 테이블간에 데이터 복사

최대한 빨리 T1에서 T2로 행을 복사해야합니다 (BCP utility을 사용하여 probalby). 열 A는 생략해야하며 열 D는 기본값을 가져야합니다. 내 단계 :

  1. BCP queryout - 어떻게 내 선택 성명과 같아야 T2

에 임시 파일

  • BCP 임시 파일로, T1에서 D로 B, C, XXX를 선택? 열 D에 대한 기본값은 어떻게 얻을 수 있습니까? 그런 일을하는 다른 어떤 간단한 방법이 있습니까?

  • +0

    D. – Reniuz

    +0

    의 유형을 알고 싶습니다. 상수를 필드로 선택할 수 있습니다 ('SELECT 'Hello World'는 D로) – ESG

    답변

    1

    연결된 서버를 사용하여 SQL을 통해이 작업을 수행 할 수 있습니다. 4 점 표기법을 사용하여 SQL의 테이블을 참조 할 수 있습니다. 표기법은 ServerName.DatabaseName.SchemaName.ObjectName입니다. 기본 스키마는 dbo이므로 테이블을 참조하려면 구문은 ServerName.DatabaseName.dbo.TableName이됩니다.

    당신은 서버 1에 이런 일을 실행할 수 있습니다

    INSERT INTO Server2.DBName.dbo.T2 (B, C, D) 
    SELECT A, B, 'Default Value' FROM Server1.DBName.dbo.T1 
    

    서버 2에 서버 1에서 연결된 서버를 설정하려면 다음을 실행합니다

    현재의 선택, 단지 필요 아무 문제가 없습니다
    USE master; 
    GO 
    EXEC sp_addlinkedserver 
        N'Server2', 
        N'SQL Server'; 
    GO 
    
    +0

    서버와 데이터베이스 이름은 내 프로그램의 입력입니다. 때로는 특정 서버에서 sp_addlinkedserver 권한이 없기 때문에 신뢰할 수 없습니다. –