ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSSQL] 테이블 복사(テーブルコピー)
    SQL Server 2021. 11. 3. 23:09

    본인이 잊어버리지 않기위해 쓰는 블로그

     

    주의점

    테이블복사는 데이터는 복사되지만

    키, 제약조건, 인덱스는 복사되지 않는다.

    기존 테이블과 동일하게 생성하려면 아래 사진처럼 스크립팅을 활용.

    ◎ 동일 서버 내 테이블 복사
    ▶ 복사할 테이블이 존재하지 않을 경우

    1
    2
    3
    SELECT * INTO 생성할테이블
    FROM 대상테이블
    WHERE 조건
    cs

         테이블 구성요소만 복사할 경우 WHERE조건에 『1=2』

    1
    WHERE 1 = 2
    cs

         데이터까지 복사할 경우 WHERE조건에 『1=1』 혹은 WHERE조건 쓰지않기

    1
    WHERE 1 = 1
    cs

         원하는 컬럼만 특정해서 테이블복사하려면?

    1
    2
    3
    4
    SELECT * INTO 생성할테이블
    FROM (SELECT col1, col2, .. 
            FROM 대상테이블) AS 임의Alias
    WHERE 조건
    cs

     

    ▶ 복사할 테이블이 존재하는 경우

    1
    2
    INSERT INTO 생성할테이블
    SELECT * FROM 대상테이블
    cs

     

    ◎ 다른 서버에 테이블 복사

    ▶ 연결된 서버(Linked Server) 이용

       ※테이블이 복사되어질 서버에서 실행할 것

    1
    2
    3
    SELECT * INTO 생성할테이블
    FROM 연결된서버명.DB명.스키마.대상테이블
    WHERE 조건
    cs

    ▶ OPENDATASOURCE를 이용

    1
    2
    3
    SELECT * INTO 생성할테이블
    FROM OPENDATASOURCE('SQLOLEDB','Driver=SQL Server;Server=대상서버명;UID=유저명;PWD=패스워드').DB명.스키마.대상테이블
    WHERE 조건
    cs

    ▶ OPENROWSET를 이용

         ※아래처럼 원하는 컬럼만 뽑아서 테이블복사도 가능

    1
    2
    3
    4
    5
    6
    SELECT * INTO 생성할테이블
    FROM (SELECT col1, col2, ..
            FROM OPENROWSET('SQLOLEDB'
                            ,'Driver=SQL Server;Server=대상서버명;UID=유저명;PWD=패스워드'
                            ,DB명.스키마.대상테이블)) AS 임의Alias
    WHERE 조건
    cs

    ▶ OPENQUERY를 이용

    1
    2
    3
    SELECT * INTO 생성할테이블
    FROM OPENQUERY(연결된서버명
                    , 'SELECT col1, col2, .. FROM 대상테이블 WHERE 조건')
    cs

         ※조건에 문자열을 넣을경우 'string'이 아닌 ''string''로 「'」를 2번씩 붙여준다

    1
    2
    3
    SELECT * INTO 생성할테이블
    FROM OPENQUERY(연결된서버명
                    , 'SELECT * FROM 대상테이블 WHERE col1 = ''문자열'' ')
    cs
Designed by Tistory.