조건부 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)
|