psql の入出力エンコーディングを確認・設定する

Windows 上の PostgreSQLコマンドラインツール psql を使ってデータベースにデータを取り込もうとしたところ、次のようなエラーが出た。 入力の文字エンコーディングが合っていない。

example_db=> \i data.sql
psql:data.sql:41: ERROR:  invalid byte sequence for encoding "SJIS": 0x85 0x27

入出力エンコーディングを確認する

example_DB=> show client_encoding;
 client_encoding
-----------------
 SJIS
(1 row)

入出力エンコーディングを設定する

一時的に(クライアントを終了するまで)エンコーディングを変えるには \encoding 内部コマンドを用いる。

example_DB=> \encoding 'UTF8'
example_DB=> show client_encoding;
 client_encoding
-----------------
 UTF8
(1 row)

デフォルトの入出力エンコーディングを設定する

デフォルトの入出力エンコーディングUnix 系の OS なら環境変数 LC_TYPE に基づいて決定される。 それを変更するには環境変数 PGCLIENTENCODING を設定する。

PGCLIENTENCODING=UTF8