강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

COPY사용법

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

COPY사용법

 

copy는 외부의 DB에서 데이터를 가져오는 방법중의 하나이다.
보통 export/import, create table .. as select.., copy등을 사용하여 외부DB로부터 데이터를 가져올 수 있다.
그외, 데이터베이스링크로 스냅샵을 생성하여 가져올 수도 있겠죠?
거두절미 어떻게 하는지 예를 보자.

SQL> copy
사용법: COPY FROM <db> TO <db> <opt> <table> { (<cols>) } USING <sel>
  <db>   : 데이터베이스 문자열, e.g., scott/tiger@d:chicago-mktg
  <opt>  : 다음 키워드중 하나: APPEND, CREATE, INSERT or REPLACE
  <table>: 수신지 테이블의 이름
  <cols> : 쉼표로 구분된 수신지 열의 별명 목록
  <sel>  : 적당한 SQL SELECT 문
누락된 FROM 혹은 TO 절이 현재의 SQL*Plus 연결에 사용합니다.

SQL> connect kang/xxxxxx@piruks
연결되었습니다.
SQL> drop table test;

테이블이 삭제되었습니다.

SQL> create table test (
  2  name varchar2(10),
  3  age number(3));

테이블이 생성되었습니다.

SQL> insert into test values('&x', 27);
x의 값을 입력하십시오: 강명규
구   1: insert into test values('&x', 27)
신   1: insert into test values('강명규', 27)

1 개의 행이 만들어졌습니다.

SQL> /
x의 값을 입력하십시오: 홍길동
구   1: insert into test values('&x', 27)
신   1: insert into test values('홍길동', 27)

1 개의 행이 만들어졌습니다.

SQL> /
x의 값을 입력하십시오: 임꺽정
구   1: insert into test values('&x', 27)
신   1: insert into test values('임꺽정', 27)

1 개의 행이 만들어졌습니다.

SQL> select * from test;

NAME                        AGE
-------------------- ----------
강명규                       27
홍길동                       27
임꺽정                       27

SQL> connect kang/xxxxxx@maddog
연결되었습니다.
SQL> copy from kang/xxxxxx@piruks to kang/xxxxxx@maddog create test
using select * from test;
배열의 인출/바인드 크기는 15입니다. (배열 크기는 15) 작업이 완성되면 커밋됩니다. (복사 완료: 0) 최대 긴 크기는 80 입니다. (롱 80) 테이블 TEST가 생성되었습니다. 3 행이 선택되었습니다(kang@piruks 로부터). 3 행이 입력되었습니다(TEST 에). 3 행이 TEST으로 완료되었습니다(kang@maddog 의). SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- TEST TABLE SQL> select * from test; NAME AGE ---------- ---------- 강명규 27 홍길동 27 임꺽정 27 복사대상이 현재 연결된 계정이라면 위의 copy문은 다음과 같이 대상부분을 지정하지 않아도 된다. copy from kang/xxxxxx@piruks create test using select * from test; SQL> connect kang/xxxxxx@maddog 연결되었습니다. SQL> copy from kang/xxxxxx@piruks to kang/xxxxxx@maddog insert test using select *
from test where age=30;
배열의 인출/바인드 크기는 15입니다. (배열 크기는 15) 작업이 완성되면 커밋됩니다. (복사 완료: 0) 최대 긴 크기는 80 입니다. (롱 80) 1 행이 선택되었습니다(kang@piruks 로부터). 1 행이 입력되었습니다(TEST 에). 1 행이 TEST으로 완료되었습니다(kang@maddog 의). SQL> select * from test; NAME AGE ---------- ---------- 강명규 27 홍길동 27 임꺽정 27 강감찬 30 SQL> [2003-07-30추가] 사용할 수 있는 명령은 다음과 같다. insert : 데이터를 insert. 테이블이 존재하지 않으면 에러 append : 데이터를 insert. 테이블이 존재하지 않으면 생성 create : 테이블이 생성후, 데이터 insert. 이미 테이블이 존재하면 에러 replace: 이미 테이블이 존재하면 제거후, 데이터 insert copy명령수행시 보이는 3가지는 set명령으로 설정될 수 있는 내용이다. 배열크기(arraysize) : 한번에 처리할 레코드수. 이를 batch라고 칭한다. copycommit : commit이 발생할 batch수를 지정 long : 컬럼타입으로 long타입이 존재하면, long값의 길이제한. SQL> show copycommit arraysize copycommit 1 arraysize 15 SQL> set arraysize 100 SQL> copy from kang/xxxxxx@linuxdb replace test using select * from test; 배열의 인출/바인드 크기는 100입니다. (배열 크기는 100) 배열 바인드 발생시마다 커밋됩니다. (복사 완료: 1) 최대 긴 크기는 80 입니다. (롱 80) 테이블 TEST가 삭제되었습니다. 테이블 TEST가 생성되었습니다. 5001 행이 선택되었습니다(kang@linuxdb 로부터). 5001 행이 입력되었습니다(TEST 에). 5001 행이 TEST( DEFAULT HOST 연결의)으로 커밋되었습니다. SQL>

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,818 개
  • 현재 접속자 :  94 명