トップ  > SQLスクリプト  > DBのテーブル単位のエキスポート(EXPORT)
 



■ DBのテーブル単位のエキスポート(EXPORT)  ┗(●・д・●)┛ナハ┗(●・д・●)┛ナハ
■ 概要
 テーブル単位のエキスポートを実行するシェルスクリプトです。
日付のディレクトリ(※YYYYMMDD)を自動で生成し、ダンプファイルとログファイルを格納します。
■ スクリプト
 EXP_DB_TABLE.sh と言うファイルを作成し、以下の内容をコピーして保存して下さい。 
 ※ファイルには実行権が必要です。
#!/bin/csh
###### 引数チェック
echo '―――――――――――――――――――――――――――――――――――――――――――'
echo 'DBのテーブル単位のエキスポートスクリプト実行 開始 '
echo '―――――――――――――――――――――――――――――――――――――――――――'
if ( $#argv != 3 ) then
        echo '[ERROR]       引数の数が違います。使用方法は次ぎの通りです。'
        echo '              USAGE:./EXP_DB_TABLE.sh [user/password@OracleSID.domain] [dmppath] [tablename]'
        echo '              引数エラーにより処理を中断します。'
        echo ''
        echo '―――――――――――――――――――――――――――――――――――――――――――'
        echo ''
        exit
endif

set LOGIN = $1
set PATHN = $2
set TABLEN = $3

# マシンのホスト名称
set HOSTN = `hostname`

# 現在時刻の取得
set DATENAME = `date '+%Y%m%d'`
set NOWTIME = `date '+%Y%m%d%H%M'`

if ( -e ./{$HOSTN}_{$NOWTIME}.DMP ) then
        echo {$HOSTN}_{$NOWTIME}.DMP'が存在しています。'
        echo -n '上書きでして宜しいでしょうか? [YES] リターンキーのみ / [NO] N :'
        set JUDGE = $<
        if ( $JUDGE != "" ) then
                exit
        endif
endif

mkdir {$PATHN}/{$DATENAME}
chmod a+r {$PATHN}/{$DATENAME}

# exp開始
exp $LOGIN \
BUFFER=65536 \
FILE={$PATHN}/{$DATENAME}/{$HOSTN}_{$TABLEN}_{$NOWTIME}.DMP \
COMPRESS=N \
GRANTS=Y \
FEEDBACK=10000 \
LOG={$PATHN}/{$DATENAME}/{$HOSTN}_{$TABLEN}_{$NOWTIME}.LOG \
INDEXES=Y \
ROWS=Y \
CONSTRAINTS=Y \
FULL=N \
DIRECT=N \
TABLES= \
  {$TABLEN}

gzip {$PATHN}/{$DATENAME}/{$HOSTN}_{$TABLEN}_{$NOWTIME}.DMP
gzip {$PATHN}/{$DATENAME}/{$HOSTN}_{$TABLEN}_{$NOWTIME}.LOG

echo {$HOSTN}' のEXPORTが終了しました。'
echo {$HOSTN}_{$NOWTIME}.DMP'を作成しました。'
echo '※ファイルは圧縮しました。'
echo ''
■ 使用方法
▼ hurricaneユーザのTEST_TBLのデータをエキスポートします。

daruma>  ./EXP_DB_TABLE.sh hurricane/mixer@hmdb1 /export/dbdmp TEST_TBL

―――――――――――――――――――――――――――――――――――――――――――
DBのテーブル単位のエキスポートスクリプト実行 開始
―――――――――――――――――――――――――――――――――――――――――――

Export: Release 9.2.0.4.0 - Production on 月 Apr 25 11:56:59 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


接続先: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
JA16EUCキャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエクスポートが終了しました
サーバーではUTF8キャラクタ・セットを使用します(キャラクタ・セットの変換可能)

指定された表をエクスポートします... 従来型パス経由...
. 表                       TEST_TBLをエクスポート中
                                                            5列がエクスポートされました。
エクスポートは正常に終了しました。
daruma のEXPORTが終了しました。
daruma_200504251156.DMPを作成しました。
※ファイルは圧縮しました。

daruma>  ls /export/dbdmp
/export/dbdmp/20050425/
daruma>  find /export/dbdmp/20050425
/export/dbdmp/20050425/daruma_TEST_TBL_200504251156.LOG.gz
/export/dbdmp/20050425/daruma_TEST_TBL_200504251156.DMP.gz
daruma>
▼ 引数が足りない場合。

daruma>  ./EXP_DB_TABLE.sh hurricane/mixer@hmdb1

―――――――――――――――――――――――――――――――――――――――――――
DBのテーブル単位のエキスポートスクリプト実行 開始
―――――――――――――――――――――――――――――――――――――――――――
[ERROR]       引数の数が違います。使用方法は次ぎの通りです。
              USAGE:./EXP_DB.sh [user/password@OracleSID.domain] [dmppath] [tablename]
              引数エラーにより処理を中断します。

―――――――――――――――――――――――――――――――――――――――――――

daruma>