linux shell 获取表,shell_linux中表导出

#!/bin/sh

########################################################################

# 命令path设定 #

########################################################################

#echoコマンド

ECHO=/bin/echo

#dateコマンド

DATE=/bin/date

#lsコマンド

LS=/bin/ls

#rmコマンド

RM=/bin/rm

#mvコマンド

MV=/bin/mv

########################################################################

#

Oracle设定 #

########################################################################

#Oracle

ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/db

export ORACLE_HOME

ORACLE_SID=XXXXXXX

export ORACLE_SID

NLS_LANG=Japanese_Japan.JA16SJISTILDE

export NLS_LANG

PATH=$PATH:${ORACLE_HOME}/bin

export PATH

#Oracle连接定义

export SQL_CONNECT_KD123

export SQL_CONNECT_CMNMST

########################################################################

# log出力设定 #

########################################################################

#log路径定义

LOGFILE_DIR=`pwd`

export LOGFILE_DIR

#log名定义(本shell的文件名去掉扩展名)

#LOGFILE_NAME=$LOGFILE_DIR/${0}.log

LOGFILE_NAME=$LOGFILE_DIR/${0%\.*}.log

export LOGFILE_NAME

#保存export对象表的文件定义

syori_Tables_kd123=$LOGFILE_DIR/11_com_expdp_Tables_kd123.txt

export syori_Tables_kd123

syori_Tables_cmnmst=$LOGFILE_DIR/12_com_expdp_Tables_cmnmst.txt

export syori_Tables_cmnmst

########################################################################

# 返回值定义 #

########################################################################

#0:正常 100:异常

OK_RETURN_CD=0

NG_RETURN_CD=100

########################################################################

# 执行时返回值check函数 #

########################################################################

check_returncd(){

#返回值"0"以外,异常终了 nkf --overwrite -w $LOGFILE_NAME

if [ ${1} !=

0 ] ; then

$ECHO ""

>> $LOGFILE_NAME

$ECHO "`$DATE`

テーブルエクスポートに失敗しました。" >>

$LOGFILE_NAME

$ECHO "`$DATE`

テーブルエクスポート処理を終了します。" >>

$LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理異常終了 return:"$NG_RETURN_CD""

>> $LOGFILE_NAME

exit $NG_RETURN_CD

fi

return

$OK_RETURN_CD

} ########################################################################

#

ログファイル有無チェック #

########################################################################

file_check(){

#戻り値が"0"の場合はファイルをログファイルを削除

if [ $? = 0

] ; then

#前回実行時ログファイル削除

$RM -f $LOGFILE_NAME

if [ $? != 0 ] ; then

exit $NG_RETURN_CD

fi

$ECHO "`$DATE` 前回実行時シェルログファイル削除正常終了 return:"$OK_RETURN_CD""

>> $LOGFILE_NAME

$ECHO "" >> $LOGFILE_NAME

fi

}

########################################################################

#

SQLPLUS起動チェック #

########################################################################

sqlplus_starting_check(){

`sqlplus -L $1<

>/dev/null 2>&1

exit

EOF`

if [ $? != 0

] ; then #SQLPLUS起動失敗固定メッセージ出力

$ECHO "`$DATE` SQLPLUSの起動に失敗しました。" >>

$LOGFILE_NAME

$ECHO "`$DATE` ログイン情報が正しい及びORACLEデータベースが起動していることを確認してください。"

>> $LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理異常終了 return:"$NG_RETURN_CD""

>> $LOGFILE_NAME

exit $NG_RETURN_CD

fi

}

########################################################################

#

エクスポート出力先ディレクトリ取得 #

########################################################################

#エクスポート出力先ディレクトリ取得

get_output_dir(){

OUTPUT_DIR=`sqlplus -S $1

<< EOF

set heading off

set pagesize 0;

set feedback off;

set verify off;

SELECT DIRECTORY_PATH FROM

ALL_DIRECTORIES WHERE DIRECTORY_NAME = 'DIR_EXP_DMP';

exit;

EOF`

if [ -z "$OUTPUT_DIR" ]; then

$LS -l $LOGFILE_NAME >/dev/null

2>&1

$ECHO "`$DATE` テーブルエクスポートに失敗しました。 "

>> $LOGFILE_NAME

$ECHO "`$DATE` エクスポート先ディレクトリ【DIR_EXP_DMP】が設定されていません。"

>> $LOGFILE_NAME

$ECHO "`$DATE` エクスポート先ディレクトリを設定してから実行してください。"

>> $LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理を終了します。"

>> $LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理異常終了 return:"$NG_RETURN_CD""

>> $LOGFILE_NAME

exit $NG_RETURN_CD

else

$LS -l $OUTPUT_DIR >/dev/null

2>&1

if [ $? != 0 ] ;then

$LS -l $LOGFILE_NAME >/dev/null

2>&1

$ECHO "`$DATE` テーブルエクスポートに失敗しました。 "

>> $LOGFILE_NAME

$ECHO "`$DATE` エクスポート出力先ディレクトリ【DIR_EXP_DMP】が存在していません。 "

>> $LOGFILE_NAME

$ECHO "`$DATE` エクスポート先ディレクトリを確認してください。"

>> $LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理を終了します。"

>> $LOGFILE_NAME

$ECHO "`$DATE` テーブルエクスポート処理異常終了 return:"$NG_RETURN_CD""

>> $LOGFILE_NAME

exit $NG_RETURN_CD

fi

export OUTPUT_DIR

fi

}

########################################################################

#dumpファイルエクスポート #

########################################################################

func_export(){

#取り扱い対象テーブル定義ファイルの有無の確認

$LS -l $2

>/dev/null 2>&1

if [ $? !=

0 ] ;then

$ECHO `$DATE` "$2 ファイル存在しません、該当ファイルよりエクスポートは行いませんでした。 "

>> $LOGFILE_NAME

return $OK_RETURN_CD

fi

#SQLPLUS起動チェック

sqlplus_starting_check $1

#エクスポート取得

get_output_dir $1

$ECHO

"-----------------------------------------------------------"

$ECHO "移動元(エクスポート先):【${OUTPUT_DIR}】"

$ECHO

"移動先 :【${LOGFILE_DIR}】"

$ECHO

"-----------------------------------------------------------"

$ECHO

`$DATE` "【$2 】より処理を開始します??? "

$ECHO

`$DATE` "【$2 】より処理を開始します??? " >>

$LOGFILE_NAME

cat ${2} | while read line

do

if [ -z "$line" ]; then

#$ECHO "空行スキップ"

continue

fi

if [ `expr index "$line" "#" ` = 1 ] ;then

#$ECHO "コメント行スキップ"

continue

fi

$ECHO `$DATE`

"【${line}】エクスポート開始" $ECHO `$DATE` "【${line}】エクスポート開始" >>

$LOGFILE_NAME

#テーブルエクスポート

#expdp $1 DIRECTORY=DIR_MNT DUMPFILE=${line}.dmp tables=${line}

log=${line}.log >/dev/null

2>&1

expdp $1 DIRECTORY=DIR_EXP_DMP DUMPFILE=${line}.dmp tables=${line}

log=${line}.log >/dev/null

2>&1

check_returncd $?

$ECHO `$DATE` "【${line}】エクスポート正常終了 return:$OK_RETURN_CD "

>> $LOGFILE_NAME

#パーミッション変更

sudo -u oracle chmod o+r $OUTPUT_DIR/${line}.dmp

check_returncd $?

$ECHO `$DATE` "【${line}.dmp】chmod 正常終了 "

>> $LOGFILE_NAME

#エクスポート先から移動先(シェル格納先)にdumpファイル移す(移動元を削除する)

#$MV -f $OUTPUT_DIR/${line}.dmp $LOGFILE_DIR

cp -p $OUTPUT_DIR/${line}.dmp $LOGFILE_DIR

sudo -u jp1user rm -f $OUTPUT_DIR/${line}.dmp

check_returncd $?

$ECHO `$DATE` "【${line}.dmp】MV 正常終了 "

>> $LOGFILE_NAME

#エクスポート先から移動先(シェル格納先)にlogファイル移す(移動元を削除する)

#$MV -f $OUTPUT_DIR/${line}.log $LOGFILE_DIR

cp -p $OUTPUT_DIR/${line}.log $LOGFILE_DIR

sudo -u jp1user rm -f $OUTPUT_DIR/${line}.log

check_returncd $?

$ECHO `$DATE` "【${line}.log】MV 正常終了 "

>> $LOGFILE_NAME

$ECHO `$DATE` "【${line}】エクスポート正常終了 " >> $LOGFILE_NAME

$ECHO `$DATE` "【${line}】エクスポート正常終了 "

done

$ECHO `$DATE` "【$2 】より処理完了しました。 "

>> $LOGFILE_NAME

$ECHO `$DATE` "【$2 】より処理完了しました。 "

}

#ログファイルの有無の確認

$LS -l $LOGFILE_NAME >/dev/null

2>&1

file_check $?

#SQLPLUS起動ディレクトリ

SQLPLUS_DIR=$LOGFILE_DIR

export SQLPLUS_DIR

#SQLPLUS起動ディレクトリへ移動

cd $SQLPLUS_DIR

#BU回線テーブルエクスポート

func_export $SQL_CONNECT_KD123 $syori_Tables_kd123

#共通マスタテーブルエクスポート

func_export $SQL_CONNECT_CMNMST $syori_Tables_cmnmst

exit $OK_RETURN_CD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值