Windows 中 psql -f file 遇到 UTF-8

我在 Ubuntu Linux 寫了 PostgreSQL 的 SQL 檔案,用 pgsql -f 讀進去很方便。後來,我想把工作環境移到 Windows ,在安裝了 PostgreSQL for Windows 之後,原本的腳本遭遇了問題。

腳本名為 db_init.sql ,是以 UTF-8 編碼撰寫。其中帶有中文字的內容,在使用以下指令時遇到錯誤:

PS C:\work\k> psql -f src\db_init.sql -d hello -U admin
用戶 admin 的密碼:
CREATE TABLE
psql:src/db_init.sql:22: ERROR: relation "note_status" already exists
psql:src/db_init.sql:27: ERROR: character with byte sequence 0xad 0x27 in encoding "BIG5" has no equivalent in encoding
"UTF8"
psql:src/db_init.sql:33: ERROR: character with byte sequence 0xa0 0xb8 in encoding "BIG5" has no equivalent in encoding
"UTF8"
psql:src/db_init.sql:71: ERROR: character with byte sequence 0xa0 0xb8 in encoding "BIG5" has no equivalent in encoding
"UTF8"

資料庫名為 hello ,設定為 Encoding=UTF8, Collation=C, Character Type=C 。 db_init.sql 中所需執行的內容為,如

insert into note_status (name) values ('審核');

最後發現,只要把 psql 的指令 \encoding UTF8 寫在檔案 db_init.sql 內容前方,即可完成檔案讀入。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Uncategorized。將永久鏈結加入書籤。