将.sql导入postgresql时出现错误的字符编码

时间:2015-02-26 15:41:22

标签: sql postgresql import character-encoding

我正在使用此命令行将大型.sql数据集导入postgresql:

psql -h localhost -U postgres -d postgres -q -f C:\andb\pgrouting\osm2po-5.0.0\dk\dk_2po_4pgr.sql

我在我的数据库中获取该表,但字符串无法显示'æ','ø'和'å'正确。当我查看我的.sql文件时,这些字符正在显示。例如

.sql:       "Pærevænget"
postgresql: "Pærevænget"

将.sql导入postgresql时,有没有办法获得正确的字符编码?

(我的数据库中使用其他方法导入的其他表没有这个问题)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

创建新数据库时,postgresql实际上会复制默认提供的数据库template1。

这意味着当您从转储创建数据库时,postgresql将采用template1数据库的编码,除非您告诉他不要,这可能是您的问题。

解决方法是以这种方式创建数据库(将you_db_name替换为数据库的实际名称):

psql -h localhost -U postgres -d template1 -c "CREATE DATABASE your_db_name WITH OWNER postgres ENCODING 'UTF8' TEMPLATE template0"

使用template0可以让你开始使用'处女'数据库并自己设置编码。有了这个,你的数据库将使用最标准的UTF-8编码,并且应该使用给你带来麻烦的字符。 然后,您可以继续进行备份,但不使用postgres数据库,而是使用之前创建的数据库:

 psql -h localhost -U postgres -d your_db_name -q -f C:\andb\pgrouting\osm2po-5.0.0\dk\dk_2po_4pgr.sql

希望有所帮助!

编辑:

模板部分的参考:Postgresql templates

您可以使用psql -l查看数据库列表,包括其编码!