【问题标题】:Getting wrong character encoding when importing .sql to postgresql将 .sql 导入到 postgresql 时出现错误的字符编码
【发布时间】:2026-01-03 18:15:02
【问题描述】:

我正在使用此命令行将大型 .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 时,有没有办法获得正确的字符编码?

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

【问题讨论】:

    标签: sql postgresql import character-encoding


    【解决方案1】:

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

    这意味着当您从转储创建数据库时,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查看数据库列表,包括它们的编码!

    【讨论】:

      最近更新 更多