Oracle Database TIP
COPY 명령어를 이용해서 테이블을 복사하는 방법 13 4 99,999+

by 구루비 COPY 복사 [2002.06.19]


  오라클 8이상 부터는 SQL*Plus에서 COPY라는 명령어를 이용해서 테이블을 복사 할 수 있는 기능을 제공 한다.

  COPY명령어는 SQL*Net이 설치되어 있어야하고, SQL*Plus에서 만 사용 할 수 있다.

 
-- 문법을 살펴보면은요..
SQL> COPY FROM 복사해올유저명 
     CREATE 생성할 테이블명 
     USING  원본 테이블 질의

-- 간단하게 예제를 하나 들면..
SQL> COPY FROM scott/tiger@oracle 
     CREATE emp2 USING SELECT * FROM emp; 

배열의 인출/바인드 크기는 15입니다. (배열 크기는 15)
작업이 완성되면 커밋됩니다. (복사 완료: 0)
최대 긴 크기는 80 입니다. (롱 80) 
테이블 EMP가 생성되었습니다.
   14 행이 선택되었습니다(scott@oracle 로부터).
   14 행이 입력되었습니다(EMP 에).
   14 행이 EMP( DEFAULT HOST 연결의)으로 커밋되었습니다.
    

  간단히 설명을 하면은요..

  scott/tiger@oracle : tnsnames.ora파일에 oracle이라는 서비스명으로 설정한 DB의 scott/tiger유저로 접속을 해서 emp 테이블을 emp2라는 이름으로 복사를 합니다.

  USING 문 뒤에는 복사할 테이블의 데이터를 가져오는 SQL문을 넣습니다.

  아래는 tnsnames.ora파일의 일부분 입니다.

 
============== tnsnames.ora ================
ORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    ) 
    (CONNECT_DATA =
      (SERVICE_NAME = oracle)
    )
  )
============================================
    

  위의 방법은 기존에..테이블을 복사하는 방법중에 CREATE TABLE table_name AS SELECT ~~ 문으로 복사하는 방법과 비슷합니다.

 
-- 예를 들어보면..
SQL> CREATE TABLE emp2
     AS
     SELECT * FROM scott.emp;   
    

  이렇게 해서 emp테이블을 emp2테이블로 복사 할 수 있었습니다.

- 강좌 URL : http://www.gurubee.net/lecture/1404

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by hisworld [2005.08.18 11:32:01]
CLOB Data의 경우 원경DB에서 가져올수 없는걸로 아는데 위와같은 방법으로 COPY가 가능한가요?

by 김길명 [2005.08.18 11:57:44]
SELECT 문에 오류가 있습니다: ORA-01002: 인출 시퀀스가 틀립니다.
라는 오류가 발생하는데... 이게 먼일인지.. ㅡ.ㅡ;;

by storm [2005.08.18 15:28:16]
COPY명령어로 LONG Data형은 가능하나 CLOB Data의 복사는 지원되지 않는 것으로 알고 있습니다.

by 박민석 [2009.06.04 12:58:11]
버젼이 틀려서 그런진 모르지만..저 같은 경우에는 copy명령어를 사용하는 이유가 long , lob 컬럼을 포함한 테이블을 이관해야 할 경우 많이 사용합니다.
근데..상담히 예전에 올리신 내용이네요.. ㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입