我正在使用此命令行将大型.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时,是否有一种方法来获取正确的字符编码?
(使用其他方法导入的数据库中的其他表没有此问题)
创建新数据库时,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
查看包含其编码的数据库列表!