여러 sql 파일을 한번에 psql 로 실행하기

식빵·2025년 9월 5일
0

postgresql-memo

목록 보기
38/38
post-thumbnail

🍀 database encoding 확인

시작하기 앞서서 psql 을 통해서 sql 파일을 쿼리를 실행하려는 database 의
Encoding 을 한번 체크해주는 게 좋습니다.

psql 로 로그인을 하고 나서 다음과 같이 명령어를 입력해서 데이터베이스 목록을 조회합니다.

\l

명령어 입력 후 위 그림처럼 database 목록이 나오는데,
여기서 Encoding 컬럼의 내용을 확인하면 됩니다.

이후 목차에서 PGCLIENTENCODING 전역변수를 수정하는 부분이 있는데,
지금 본 Encoding 컬럼의 값과 동일하게 세팅해야 합니다.

참고로 기본적으로 PGCLIENTENCODING 전역변수를 지정 안했다면,
자동으로 psql 이 자신의 실행 환경을 참조해서 세팅됩니다.
이렇게 하면 Database Encoding 과 맞지 않아서 에러가 나는 경우가 많습니다.



🍞 Window 의 경우

Window Powershell 를 실행하고 아래처럼 명령어를 입력합니다.
( {??} 처럼 입력된 부분은 본인에게 맞게 수정해주세요 )

# [🍀 client encoding 확인] 목차에서 설명한 부분입니다.
$Env:PGCLIENTENCODING='UTF8'

# 계정 비밀번호 세팅
$Env:PGPASSWORD='{계정 비밀번호}'

# 실행하려는 sql 파일들이 모인 디렉토리를 Get-ChildItem 의 인자로 주면서
# foreach 로 루프를 돌면서 안에 있는 sql 파일들을 실행합니다.
Get-ChildItem '{sql_파일들이_있는_디렉토리_경로}' -Filter *.sql | foreach {
   psql -d {데이터베이스 명} -U {계정 아이디} -h {호스트} -p {포트번호} -f $_.FullName
}



🍞 Unix 계열의 경우

sh 를 실행시키고 아래처럼 입력합니다.
( {??} 처럼 입력된 부분은 본인에게 맞게 수정해주세요 )

# [🍀 client encoding 확인] 목차에서 설명한 부분입니다.
export PGCLIENTENCODING='UTF8'

# 계정 비밀번호 설정
export PGPASSWORD='{계정 비밀번호}'

# SQL 파일들이 모여 있는 디렉토리 경로 지정
SQL_DIR="{sql_파일들이_있는_디렉토리_절대경로}"

# 해당 디렉토리 내의 모든 .sql 파일 실행
for file in "$SQL_DIR"/*.sql; do
  psql -d {데이터베이스 명} -U {계정 아이디} -h {호스트} -p {포트번호} -f "$file"
done

혹시라도 export PGPASSWORD='{계정 비밀번호}' 처럼 입력해서 비밀번호가
노출되는 것이 부담스러우신 분들이 있다면 위 명령어들을 하나의 *.sh 파일에 넣고
실행하시길 바랍니다.



🍞 참고: psql 과 db 호환성 안 맞을 때

설치한 psql 과 postgresql database 의 버전 호환성이 안 맞아서 동작이
안되는 경우가 있는데, 그럴 때는 psql 을 database 의 메이저 버전과 똑같은 것으로
다운로드 받으면 됩니다. 이와 관련해서는 이전에 작성한 글을 참고하시기 바랍니다.

profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글