将 .sql 导入 postgresql 时字符编码错误
Getting wrong character encoding when importing .sql to postgresql
我正在使用此命令行将大型 .sql 数据集导入到 postgresql:
psql -h localhost -U postgres -d postgres -q -f C:\andb\pgrouting\osm2po-5.0.0\dk\dk_2po_4pgr.sql
我正在数据库中获取 table,但字符串无法正确显示“æ”、“ø”和“å”。当我查看我的 .sql 文件时,这些字符正在显示。例如
.sql: "Pærevænget"
postgresql: "Pærevænget"
在将 .sql 导入 postgresql 时,有没有办法获得正确的字符编码?
(我的数据库中使用其他方法导入的其他 table 没有这个问题)
创建新数据库时,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 允许您从 'virgin' 数据库开始并自行设置编码。有了这个,您的数据库将使用最标准的 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
查看数据库列表,包括它们的编码!
我正在使用此命令行将大型 .sql 数据集导入到 postgresql:
psql -h localhost -U postgres -d postgres -q -f C:\andb\pgrouting\osm2po-5.0.0\dk\dk_2po_4pgr.sql
我正在数据库中获取 table,但字符串无法正确显示“æ”、“ø”和“å”。当我查看我的 .sql 文件时,这些字符正在显示。例如
.sql: "Pærevænget"
postgresql: "Pærevænget"
在将 .sql 导入 postgresql 时,有没有办法获得正确的字符编码?
(我的数据库中使用其他方法导入的其他 table 没有这个问题)
创建新数据库时,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 允许您从 'virgin' 数据库开始并自行设置编码。有了这个,您的数据库将使用最标准的 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
查看数据库列表,包括它们的编码!