
시작하기 앞서서 psql 을 통해서 sql 파일을 쿼리를 실행하려는 database 의
Encoding 을 한번 체크해주는 게 좋습니다.
psql 로 로그인을 하고 나서 다음과 같이 명령어를 입력해서 데이터베이스 목록을 조회합니다.
\l

명령어 입력 후 위 그림처럼 database 목록이 나오는데,
여기서 Encoding 컬럼의 내용을 확인하면 됩니다.
이후 목차에서 PGCLIENTENCODING 전역변수를 수정하는 부분이 있는데,
지금 본 Encoding 컬럼의 값과 동일하게 세팅해야 합니다.
참고로 기본적으로
PGCLIENTENCODING전역변수를 지정 안했다면,
자동으로 psql 이 자신의 실행 환경을 참조해서 세팅됩니다.
이렇게 하면 Database Encoding 과 맞지 않아서 에러가 나는 경우가 많습니다.
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
}
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 과 postgresql database 의 버전 호환성이 안 맞아서 동작이
안되는 경우가 있는데, 그럴 때는 psql 을 database 의 메이저 버전과 똑같은 것으로
다운로드 받으면 됩니다. 이와 관련해서는 이전에 작성한 글을 참고하시기 바랍니다.