#!/bin/sh
db2 CONNECT TO TABLE
# SQL 파일 경로
SQL_FILE="/opt/db2inst1/script/5.sql"
# 임시 파일을 사용하여 쿼리 블록 저장
TEMP_FILE=$(mktemp)
# 쿼리 블록을 저장하는 플래그
in_query_block=false
# 전체 파일을 읽어서 쿼리 블록을 임시 파일에 저장
while IFS= read -r line; do
# 빈 줄이나 주석은 무시
if [ -z "$line" ] || echo "$line" | grep -q "^--"; then
continue
fi
# 세미콜론이 있는 경우 쿼리 블록의 끝을 나타냄
if echo "$line" | grep -q ";"; then
# 줄에서 세미콜론 제거
echo "${line%;}" >> "$TEMP_FILE"
echo "Executing: $(cat $TEMP_FILE)"
# DB2에서 쿼리 블록 실행
db2 -t "$(cat $TEMP_FILE)"
# 임시 파일 비우기
> "$TEMP_FILE"
in_query_block=false
else
# 쿼리 블록에 줄 추가
echo "$line" >> "$TEMP_FILE"
in_query_block=true
fi
done < "$SQL_FILE"
# 마지막 쿼리 블록 처리 (파일 끝에서 세미콜론 없이 끝날 경우)
if [ -s "$TEMP_FILE" ]; then
echo "Executing: $(cat $TEMP_FILE)"
db2 -t "$(cat $TEMP_FILE)"
fi
# 임시 파일 삭제
rm "$TEMP_FILE"
db2 connect reset
----
AIX에서 db25.sql에 들어 있는 script 를 전부 한번에 부으려고 하니까 space 오류가 났다
띄어쓰기 하나하나를 중요하게 보는 서버 환경이라 오류가 난 것 같아서
sql 문 내에 있는 스크립트를 세미콜론으로 나누어서 하나씩 실행하는 쉘 파일이다.
서버에서 db2 를 실행할 때, 세미콜론이 존재하면 안 되서 세미콜론으로 블록을 나눈 후
세미콜론은 줄에서 제거할 수 있도록 만들었다.
'Server' 카테고리의 다른 글
| CentOS 7.7 에서 db2 설치하기 (0) | 2025.04.16 |
|---|---|
| LINUX 환경 변수 설정 (0) | 2024.11.25 |
| Delete Shell 작성 (0) | 2024.10.15 |
| db2 서버에서 실행 (0) | 2024.07.16 |
| compile, 실행 쉘 (0) | 2024.07.12 |