Oracle expdp/impdp са query условом и између две различите шеме на бази

У овом примеру урадићемо експорт чистих података из табеле, без констрејнта, индекса, тригера и осталих мета-података и то за одређене датуме (у овом примеру старије од 01/01/2017) из неке колоне у табели користећи query услов и после те исте податке импортовати код другог Оracle корисника односно под другом шемом.

Ако ће табеле бити у различитим tablespace-овима или треба да се подаци додају на постојеће ако табела већ постоји – имате доле синтаксу за то. Не користимо CONTENT=DATA_ONLY јер у том случају табела не може бити креирана у другој шеми јер нисмо експортовали њену дефиницију (ово је употребљиво само за импорт у већ постојеће табеле)

Због лакше манипулације користићемо варијабле и све радимо на Линуксу.

####################################
########### ВАРИЈАБЛЕ ##############
SOURCE_KORISNIK="kompjuteras"
SOURCE_LOZINKA="kompjuteras_pass"
SOURCE_TABELA_ZA_EXPORT="some_table"
SOURCE_KOLONA_SA_DATUMOM="table_date"
DESTINATION_KORISNIK="other_user"
DESTINATION_LOZINKA="other_user_pass"
DATAPUMP_FOLDER="DIR_FOR_EXPORT"
####################################

# Експортуј само податке из табеле али и дефиницију табеле
# (да би могла да буде креирана у другој шеми)
expdp ${SOURCE_KORISNIK}/${SOURCE_LOZINKA} \
tables=${SOURCE_TABLE_FOR_EXPORT} \
directory=${DATAPUMP_FOLDER} \
query=${SOURCE_TABLE_FOR_EXPORT}:\"where ${SOURCE_TABLE_DATE_COLUMN_NAME} \< \'01-JAN-2017\'\" \
dumpfile=`date +%Y-%m-%d`_${SOURCE_TABLE_FOR_EXPORT}.dmp \
logfile= `date +%Y-%m-%d`_${SOURCE_TABLE_FOR_EXPORT}.export.log \
exclude=constraint,index,trigger,statistics,grants

# Импортуј податке у табелу под другим корисником
impdp ${DESTINATION_USER}/${DESTINATION_PASSWORD} \
directory=${DATAPUMP_FOLDER} \
dumpfile=`date +%Y-%m-%d`_${SOURCE_TABLE_FOR_EXPORT}.dmp \
logfile= `date +%Y-%m-%d`_${SOURCE_TABLE_FOR_EXPORT}.import.log \
tables=${SOURCE_TABLE_FOR_EXPORT} \
REMAP_SCHEMA=${SOURCE_KORISNIK}:${DESTINATION_USER}

# по потреби REMAP_TABLESPACE=SOURCE_TABLESPACE:DESTINATION_TABLESPACE
# по потреби TABLE_EXISTS_ACTION=APPEND