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

테이블내 조건에 맞는 데이터만 export

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

테이블내 조건에 맞는 데이터만 export

t.gif
t.gif
조건부 export
exp의 query패러미터에 where조건을 지정할 수 있다.
그러면 전체 테이블데이터를 export하지 않고도 일부분만을 export할 수 있다.

create table exp_test
(
base_date date,
name varchar(10)
);

insert into exp_test values (sysdate-5, '5일전');
insert into exp_test values (sysdate-4, '4일전');
insert into exp_test values (sysdate-3, '3일전');
insert into exp_test values (sysdate-2, '2일전');
insert into exp_test values (sysdate-1, '1일전');
insert into exp_test values (sysdate, '0일전');

마지막에 입력된 데이터(0일전)만을 export한다.
query의 escape문자로 를 사용한다.
D:>exp kang/xxxxx tables=exp_test query="where base_date> sysdate-1"    
                                                                                
Export: Release 8.1.7.0.0 - Production on 금 Jan 17 20:08:15 2003              
                                                                                
(c) Copyright 2000 Oracle Corporation.  All rights reserved.                    
                                                                                
                                                                                
접속 대상: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production          
With the Partitioning option                                                    
JServer Release 8.1.7.0.0 - Production                                          
KO16KSC5601 문자 설정과 KO16KSC5601 NCHAR 문자 설정에서 엑스포트가 종료되었습니다                                                                              
                                                                                
지정된 테이블을 엑스포트하려고 합니다 via 규정 경로...                          
. . 테이블                       EXP_TEST(를)을 엑스포트 중          1 행이 엑스포트됨                                                                          
엑스포트가 경고 없이 정상적으로 종료되었습니다.                                
                                                                                
D:>                        

query에서 ESCAPE처리할 문자는 OS마다 유닉스의 경우, 쉘에 따라 달라질 수 있다.
예를 들어, 위의 질의를 리눅스 bash쉘에서 사용시에는 >도 ESCAPE처리해줘야 한다.
ksh의 경우, 괄호() 도 ESCAPE문자로 감싸줘야 한다


[kang@maddog test]$ exp userid=scott/tiger@prod tables=member query="where reg_time>sysdate-2"

위의 쿼리는 다음과 같이 환경변수를 이용하여 처리할 수도 있다. 확인해보지 않았음

[kang@maddog test]$ QUERY='where reg_time > sysdate-2'
[kang@maddog test]$ exp userid=scott/tiger@prod tables=member query="$QUERY"
[kang@maddog test]$ imp userid=system/manager tables=member fromuser=scott touser=kang

도무지 명령라인에서는 할 수 없을 것 같으면 패러미터파일을 이용한다.
kang@maddog test]$ cat member_some.par
file=member_some.dmp
query="where reg_time > sysdate-2"
tables=(member)
log=member_some.txt
userid=scott/tiger

kang@maddog test]$ exp parfile=member_some.par

This article comes from dbakorea.pe.kr (Leave this line as is)

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  91 명