대량의 테스트 데이터 INSERT를 위해 .sql 파일을 만들어 사용한다. 이때 sql 파일 내에 한글 데이터로 인해 인코딩 에러가 난다면, PostgreSQL의 client-encoding 설정이 필요하다.
PostgreSQL에서 sql 파일을 실행할 때, 주로 psql 을 사용한다. 사용법은 아래와 같다.
> psql -U {USER_NAME} -d {DATABASE} -f {SQL_FILE_PATH}
이를 이용하면 sql 파일 내에 대량의 INSERT 쿼리를 작성해놓고, 한번에 테스트 DB를 세팅할 수 있어서 편하다.
간혹 한글 데이터 등이 포함된 sql 파일 실행시, 아래 에러가 발생한다.
> psql:INSERT.sql:2: 오류: 0xec 0xa0 바이트로 조합된 문자(인코딩: "UHC")와 대응되는 문자 코드가 "UTF8" 인코딩에는 없습니다
> psql:INSERT.sql:26030: 오류: 0xb0 0x20 바이트로 조합된 문자(인코딩: "UHC")와 대응되는 문자 코드가 "UTF8" 인코딩에는 없습니다
이때는 당황하지말고 client_encoding을 확인해보자.
일단 psql 커맨드를 통해 DB에 접속 후, client_encoding을 확인한다.
> psql -U {USER_NAME}
> psql -U postgres
postgres=# show client_encoding;
이제 client_encoding을 알맞게 바꿔주면 된다(EUC_KR / UTF8 등).
구글링 해보면 다양한 client_encoding 변경 방법이 있지만, Windows의 경우 그냥 환경변수에 설정하는게 제일 편하고 확실하다.
변수 이름 : PGCLIENTENCODING
변수 값 : UTF8
이제 PostgreSQL을 재기동한 후, 다시 client_encoding을 확인해보면 변경된 것을 확인할 수 있다. sql 파일을 실행시켜 보면 정상적으로 INSERT가 가능하다.