시소당
COPY명령을 이용한 오라클 테이블 복사 Oracle DB
2007/01/12 14:44
http://blog.naver.com/underline/130013307096
오라클 8이상 부터는 SQL*Plus에서 COPY라는 명령어를 이용해서 테이블을 복사 할 수 있는 기능도 제공을 합니다.
그런데 COPY명령어는 SQL*Net이 설치되어 있어야지만 사용할 수 있습니다.
SQL*Net만 설치되어 있다면 다른 DB의 테이블도 복사를 해 올 수가 있습니다.
그리고 SQL*Plus에서만 사용할 수 있습니다.
문법을 살펴보면은요..
SQL> COPY FROM 복사할유저명/암호@SID CREATE 생성할테이블명 USING 원본테이블질의
예제:
SQL> COPY FROM scott/tiger@oracle CREATE emp2 USING select * from emp;
위의 방법은 데이터를 복사하면서 테이블을 생성하는 방법이고 기존에 생성되어 있는 테이블에 데이터만 복사할 수 도 있습니다.
SQL> COPY FROM scott/tiger@oracle CREATE emp2 USING select * FROM emp;
이 문법에서 CREATE를 INSERT로 바꿔 주시면 됩니다.
SQL> COPY FROM scott/tiger@oracle INSERT tmp2 USING select * from emp;
이렇게 하시면 됩니다.
--- 네이버 카페중에 올라온 글을 좀 줄여서 썼습니다... 복사가 안되서..ㅡㅡ;
ps. long형 복사할려고 한거였는데 컬럼의 데이터가 짤리더군요
이거저거 찾아보다가 SQL*Plus의 환경을 좀 바꿔주니까 되네요
set long 100000 --(복사할 long형의 최대 데이터보다 크게)
set longc 100000 --(복사할 long형의 최대 데이터보다 크게)
게시판의 내용컬럼이 long형이어서 그나마 얼마 크지 않은 용량이라 다행..ㅡㅡ;
이거 가지고 이틀을 끙끙댔네..쩝
p.s2 이거 long raw등의 BLOB에는 적용안되네...ㅡㅡ; 젠장.. ==========================================================================================
재정리 2007_12_01
==========================================================================================
이 당시 imp/exp 개념이 부족해서 이렇게 했었는데
그냥 export 받아서 데이터만 import하고 나중에 constraint 설정등을 해주는게 더 쉬울듯
table, index 등의 스크립트를 먼저 작성하고 import한다음에 해당 스크립트 돌려주면 끝!!!