본문 바로가기

IT

[shell] 파일에서 테이블 리스트 읽어 행의 수(row수)를 세는 shell script만들어보기

반응형

 

오라클의 sqlplus와 shell script를 통해 데이터베이스의 row수를 세는 간단한 shell을 만들어보았습니다.
단, 딱 저것만 하기는 좀 아쉬워서 몇가지 기능을 더 넣어봤어요.

코드를 정리해 보면 아래와 같습니다.


1. 테이블 명들이 line by line으로 적혀있는 파일 가져오기
2. 해당 파일을 line by line으로 읽어, 테이블명을 뽑아내기
3. DB에 sqlplus로 접근하기
4. 같은 테이블들을 갖고 있는 DB서버1과 2가 있다고 가정할때 이 둘을 비교하기
5. 이때 오라클 결과 값을 shell변수로 가져오기
6. 해당 내용 이쁘게 출력하기(제 나름대로..?)

 

#!/bin/bash

list = `cat table_list`

echo "테스트 시작"
echo "DB : $1 과 DB : $2 비교"

for line in $list
do

echo $line

var1 = `sqlplus -s db$1/db$1 << EOF
		SET HEAD OFF
        SET ECHO OFF
        
        select count(*) from $line;

EOF`


var2 = `sqlplus -s db$2/db$2 << EOF
		SET HEAD OFF
        SET ECHO OFF
        
        select count(*) from $line;

EOF`


echo "-----------------------------"
printf "$1\t $2\t\t Check\n"
if [ $var1 -ne $var2 ]; then
	printf "%s\t %s\t\t ERROR\n" $var1 $var2
else
	printf "%s\t %s\t\t SUCCESS\n" $var1 $var2
fi
echo "-----------------------------"

done

exit 0

 

cf. 제 개발 PC에 있던 애들 복붙한것이 아니라 한자한자 보고쳐서, 요상한 에러로 작동 오류가 날수도 있어요!

cf2. 나중에 확인해야겠네요.

 


Using bash shell, oracle, sqlplus...

반응형