代码之家  ›  专栏  ›  技术社区  ›  Enrique de Miguel

Postgresql数据恢复编码

  •  0
  • Enrique de Miguel  · 技术社区  · 10 年前

    我无法恢复数据库脚本。

    我关注过不同的帖子,这就是我迄今为止为解决这个问题所做的:

    1-将UTF-8旧数据库转储到LATIN9:

    "C:\Program Files (x86)\pgAdmin III\1.22\pg_dump" -E LATIN9 --no-owner --no-acl -U postgres -W -h localhost -p 5432 database_name > database_name.sql
    

    2-删除旧数据库

    DROP DATABASE database_name;
    

    3-将新数据库创建为LATIN9:

    CREATE DATABASE "database_name" WITH ENCODING='LATIN9' OWNER=username TEMPLATE=template0 LC_COLLATE='C' LC_CTYPE='C' CONNECTION LIMIT=-1;
    

    4-我尝试使用下一个命令恢复在第一步中创建的LATIN9脚本:

    "C:\Program Files (x86)\pgAdmin III\1.22\psql.exe" -U username-d database_name -f database_name.sql
    

    然后我得到错误消息:

    psql:FATAL:不支持WIN1252和LATIN9之间的转换

    我不明白,脚本已经是LATIN9了!!!发生什么事? 我想补充一点,我想用它归档的是将我当前的UTF-8数据库更改为LATIN9。

    1 回复  |  直到 10 年前
        1
  •  0
  •   Enrique de Miguel    10 年前

    为了使它工作,我改变了步骤1和4。 以下是所有更正步骤:

    1-

    "C:\Program Files (x86)\pgAdmin III\1.22\pg_dump" --host localhost --port 5432 --username "postgres" --role "postgres" --no-password  --format tar --blobs --encoding LATIN9 --verbose --file "database_name.backup" "database_name"
    

    2-

    DROP DATABASE database_name;
    

    3-

    CREATE DATABASE "database_name" WITH ENCODING='LATIN9' OWNER=username TEMPLATE=template0 LC_COLLATE='C' LC_CTYPE='C' CONNECTION LIMIT=-1;
    

    4-

    "C:\Program Files (x86)\pgAdmin III\1.22\pg_restore" --host localhost --port 5432 --username "postgres" --dbname "database_name" --role "postgres" --no-password  --verbose "database_name.backup"