DB (데이터베이스)/Oracle (오라클)

[Oracle] oracle에서 expdp중 exclude옵션과 query옵션 parfile로 작성하기

뜽배 2024. 7. 1. 19:36
728x90
반응형


oracle의 Datapump인 expdp는 export하는 기능을 한다.
이 때 exclude옵션과 query옵션을 사용할 때 '(홑따옴표)문제 때문에 작성하는데 어려움을 겪는다. 
이 문제를 쉽게 해결할 방안에 대해서 알아보자.


1. expdp exclude예시

 

1-1. exclude옵션을 expdp에 직접 사용


exclude옵션은 export를 제외할 table 또는 schema를 명시할 수 있다.

table exclude 예시)  exclude=table:"IN('TEST', 'TEST2')"
schema exclude 예시) exclude=schema:"IN('SYS', 'SYSTEM', 'TEST')"

 Unix(Linux)에서는 include, exclude옵션에서는 [ ", ', (, ), $ ] 와 같은 문자앞에는 \(역슬래쉬)를 입력해야 문법 오류가 나지 않는다.


이 옵션을 실제로 Unix(Linux)에서 사용한다면 아래와 같이 사용해야 한다.

* Unix(Linux)

time expdp system/test directory=TEST dumpfile=test.dmp logfile=test.log schema=test exclude=table:\"IN \(\'TEST\', \'TEST2\'\)\"


이렇게 \(역슬래쉬)를 입력하다 보면 가독성도 떨어지고 문법 애러시 어떤 부분에서 애러가 발생했는지 발견하기가 쉽지 않다.
따라서 par파일을 통해 해결하는 좋은 방법이 있다.


1-2. exclude옵션을 parfile에 사용

vi test.par

directory=TEST dumpfile=test.dmp logfile=test.log schema=test exclude=table:"IN ('TEST', 'TEST2')"

 

time expdp system/test parfile=test.par

이렇게 마무리 지으면 \(역슬래쉬) 이스케이프 문자를 신경쓰지 않아도 된다.

 


2. expdp query예시


query옵션 역시 \(역슬래쉬)를 써야 하지만 par파일로 작성하는 예시를 알아보자.

우선 query옵션의 사용 포맷은 아래와 같다.
예시 ) query=<스키마명>.<테이블명>:"<사용할 쿼리문>"

vi test.par

directory=TEST dumpfile=test.dmp logfile=test.log table=test.test1 query=test.test1:"where date > to_date('20240101', 'yyyymmdd')"

 

time expdp system/test parfile=test.par



위 예시를 통해 \(역슬래쉬) 이스케이프 문자를 사용하지 않고 exclude옵션과, query옵션을 사용하는 예시에 대해 알아보았다.
위 예시를 통해 \(역슬래쉬) 이스케이프 문자를 사용하지 않고 exclude옵션과, query옵션을 사용하는 예시에 대해 알아보았다.

728x90
반응형