silkTestで移行試験をやるときに、お客様からの要望はDBから取得するレコードは複数なcsvファイルに格納する。
該ファイルの接続子は[.n]ここのnは整数である(0から加えて。)
とりあえずはshソースを共有します。何か問題が有りましたら、私に連絡してください。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#!/bin/sh
# 実行時に指定された引数の数、つまり変数 $# の値が1でなければエラー終了。
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには1個の引数が必要です。" 1>&2
exit 1
fi
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには1個の引数が必要です。" 1>&2
exit 1
fi
# ヒアドキュメントでメッセージを表示する。
cat <<__eot__>指定された引数は、
$1
の$#個です。
__EOT__
cat <<__eot__>指定された引数は、
$1
の$#個です。
__EOT__
#実行sqlのディレクトリ
SQLDIR="/home/igha9001/btchos/$1"
export SQLDIR
SQLDIR="/home/igha9001/btchos/$1"
export SQLDIR
#幾つかレコードでファイルを分割する
BUNKATSU_LINE="300"
export BUNKATSU_LINE
BUNKATSU_LINE="300"
export BUNKATSU_LINE
#総計レコード数
RECORD_COUNT=0
RECORD_COUNT=0
#分割ファイル数
m=0
m=0
#csvデータは抽出sqlから実行して取得する
echo exit | $ORACLE_HOME/bin/sqlplus -s GA7_MAIN/'12qw#$ER'@GA7 @$SQLDIR/$1_ActiveData.sql
echo exit | $ORACLE_HOME/bin/sqlplus -s GA7_MAIN/'12qw#$ER'@GA7 @$SQLDIR/$1_ActiveData.sql
#該当パタンーに対する抽出sqlのレコード数を取得する
RECORD_COUNT=`tail -n 1 "$SQLDIR/$1_activedata.csv"`
RECORD_COUNT=`tail -n 1 "$SQLDIR/$1_activedata.csv"`
#最終行からレコード総行数を削除する
sed -i -e '$d' $SQLDIR/$1_activedata.csv
sed -i -e '$d' $SQLDIR/$1_activedata.csv
#抽出sqlから取得総件数より、分割したファイル数を計算する
#総レコード数は分割定数より小さいの場合、分割ファイル数の設定
if [ `expr $RECORD_COUNT \/ $BUNKATSU_LINE` -eq 0 ]; then
m=1
#余数が0以外の場合、分割ファイル数の設定
elif [ `expr $RECORD_COUNT \% $BUNKATSU_LINE` -ne 0 ]; then
m=`expr \( $RECORD_COUNT \/ $BUNKATSU_LINE \) + 1`
else
m=`expr \( $RECORD_COUNT \/ $BUNKATSU_LINE \)`
fi
#総レコード数は分割定数より小さいの場合、分割ファイル数の設定
if [ `expr $RECORD_COUNT \/ $BUNKATSU_LINE` -eq 0 ]; then
m=1
#余数が0以外の場合、分割ファイル数の設定
elif [ `expr $RECORD_COUNT \% $BUNKATSU_LINE` -ne 0 ]; then
m=`expr \( $RECORD_COUNT \/ $BUNKATSU_LINE \) + 1`
else
m=`expr \( $RECORD_COUNT \/ $BUNKATSU_LINE \)`
fi
#ファイル分割の具体方法
for i in `seq 1 $m`; do
if [ $i -eq 1 ]; then
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv >> $SQLDIR/$1_activedata.csv.$i
else
#ファイル毎にはヘッダを追加する
head -n 1 $SQLDIR/$1_activedata.csv >> $SQLDIR/$1_activedata.csv.$i
for i in `seq 1 $m`; do
if [ $i -eq 1 ]; then
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv >> $SQLDIR/$1_activedata.csv.$i
else
#ファイル毎にはヘッダを追加する
head -n 1 $SQLDIR/$1_activedata.csv >> $SQLDIR/$1_activedata.csv.$i
#指定行数のレコードを取得してファイルに追加する
if [ `expr \( $BUNKATSU_LINE \* $i \)` -gt $RECORD_COUNT ]; then
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv | tail -`expr \( $RECORD_COUNT - \( $BUNKATSU_LINE \* \( $i - 1 \) \) + 1 \)` >> $SQLDIR/$1_activedata.csv.$i
else
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv | tail -$BUNKATSU_LINE >> $SQLDIR/$1_activedata.csv.$i
fi
fi
done
if [ `expr \( $BUNKATSU_LINE \* $i \)` -gt $RECORD_COUNT ]; then
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv | tail -`expr \( $RECORD_COUNT - \( $BUNKATSU_LINE \* \( $i - 1 \) \) + 1 \)` >> $SQLDIR/$1_activedata.csv.$i
else
head -n `expr \( $BUNKATSU_LINE \* $i \)` $SQLDIR/$1_activedata.csv | tail -$BUNKATSU_LINE >> $SQLDIR/$1_activedata.csv.$i
fi
fi
done
exit 0
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
上記のsh中身で、$1_ActiveData.sqlの内容は以下の通りです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
SET ECHO OFF
SET PAGESIZE 0
SET HEADING ON
SET UNDERLINE OFF
SET TERMOUT OFF
SET PAUSE OFF
SET LINESIZE 500
SET FEEDBACK OFF
SET TRIMSPOOL ON
SET COLSEP ','
SET PAGESIZE 0
SET HEADING ON
SET UNDERLINE OFF
SET TERMOUT OFF
SET PAUSE OFF
SET LINESIZE 500
SET FEEDBACK OFF
SET TRIMSPOOL ON
SET COLSEP ','
SPOOL /home/igha9001/btchos/ZT-051/ZT-051_activedata.csv
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Header.sql
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Body.sql
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Count.sql
SPOOL OFF
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Header.sql
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Body.sql
@/home/igha9001/btchos/ZT-051/ZT-051_ActiveData_Count.sql
SPOOL OFF
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
以上です、宜しくお願い致します。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24535596/viewspace-750068/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24535596/viewspace-750068/