Server

AIX 에서 db2 script 실행하는 쉘 파일

끊임없이 개발하는 새럼 2024. 8. 12. 17:24

#!/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