|
Oracle
|
|
expとパラメータファイル |
|
|
|
2024/03/20 |
Oracle表のエクスポートには、expコマンドを使います。
ここではパラメータファイルを使った例をメモっておきます。
パラメータファイルは、次のように書きます。
cat > $PARFILE << EOF
userid=dev/password
tables=(ITEMS)
query="where item_number like 'R9%'"
direct=n
buffer=1000000
file=items.dmp
log=items.log
※queryオプションを指定したときには、direct=yは使用できません。
そして、コマンドラインのparfileオプションで上のパラメータファイル名を指定します。
% exp scott/tiger parfile=exp.par
運用環境のデータをテスト環境で使うためにコピーする場合など、
運用時の表の持ち主とインポート先の表の持ち主の名前が異なる場合があります。
そのときには、次のようにimpのパラメータで
fromuserとtouserを使います。
% exp userid=honuser/honpass direct=y tables='(ORDERS)' grants=no \
buffer=10000000 file=orders.dmp
% imp userid=devuser/devpass file=orders.dmp ignore=y \
fromuser=honuser touser=devuser tables='(ORDERS)'
エクスポートのgrantsオプションは、表が他ユーザに何かのオブジェクト権限をGRANTしている場合、
それらも含めて保存するオプションで、デフォルトはyesですが、
テスト環境にGRANT相手のユーザが居ない場合、警告が発生します
(データはインポートされる)。そのことがあらかじめ分かっている場合には、
grants=noとしておくとよいでしょう。
パラメータファイルを作成せず、コマンドラインでquery=を指定する際にはエスケープが必要です。
% exp userid=honuser/honpass tables='(ORDERS)' grants=no file=orders.dmp \
query=\" WHERE ORDER_NO \> \'A2000\' \"
エスケープが必要な文字はOS環境によって異なるそうです。私のUNIX環境では上のようになりました。
つまりWHERE句を囲む二重引用符自身と、その中に含まれる一重引用符および不等号文字にはエスケープが必要で、
空白文字には不要でした。
以下のスクリプトを実行すると、引数で指定したテーブルを、
拡張子.dmpをつけてダウンロードし、さらにcompressで圧縮します。
#! /bin/sh
# exptab.sh
ORA_USR=orauser/orapas
BINDIR=${HOME}/bin
if test "x$1" = "x" ; then
echo "usage: exptab.sh {TABLE_NAME}"
exit 1
fi
TABLE_NAME=$1
OUTFILE=exp_${TABLE_NAME}.dmp
PARFILE=exp_${TABLE_NAME}.par
cat > $PARFILE << EOF
userid=${ORA_USR}
file=${OUTFILE}
direct=y
tables=(
${TABLE_NAME}
)
EOF
$ORACLE_HOME/bin/exp parfile=$PARFILE
compress $OUTFILE
/bin/rm $PARFILE
対になるインポートのスクリプトです。
コマンドライン引数でテーブル名を指定して実行すると、
カレントディレクトリに置かれている「テーブル名.dmp.Z」
を展開し、インポートします。
#! /bin/sh
# imptab.sh
ORA_USR=orauser/orapas
if test "x$1" = "x" ; then
echo "usage: imptab.sh {TABLE_NAME}"
exit 1
fi
TABLE_NAME=$1
INFILE=exp_${TABLE_NAME}.dmp
uncompress $INFILE
PARFILE=imp_${TABLE_NAME}.par
cat > $PARFILE << EOF
userid=${ORA_USR}
file=${INFILE}
ignore=y
tables=(
${TABLE_NAME}
)
EOF
$ORACLE_HOME/bin/imp parfile=$PARFILE
/bin/rm $PARFILE
|
|
|
もくじ
|
|
Oracle
|
|
(C) 2002-2023 MISUMI URANO (2002/11/11 - 2024/03/20)
|