小编use*_*276的帖子

windows 和 linux 之间的编码和 pg_dump/restore 问题

我有一个使用 WIN1252 编码的 pg_dump 创建的 dmp 文件。我想做的是使用 pg_restore 将它导入到 Linux 机器上的数据库中。问题是在 Windows 机器上 postgreSQL 识别编码 WIN1252 但不识别 CP1252 编码(它们都是相同的,只是相同标准的不同名称)。在 Linux 机器上,postgreSQL 能识别 CP1252 但不能识别 WIN1252。因此,当我尝试执行 pg_restore 时,出现错误,因为 WIN1252 未被识别为正确的编码。此外,如果我尝试在 Windows 上执行 pg_dump 并将编码指定为 CP1252,则会出现类似的错误。我想坚持使用这种编码格式,因此在 utf8 中执行 pg_dump 或其他事情不是我想做的事情。任何帮助,将不胜感激!

编辑:实际上,经过进一步调查,postgreSQL 不理解 cp1252。用于将文本文件从一种编码转换为另一种编码的 iconv linux 命令理解 cp1252 而不是 win1252,这就是我从哪里得到它的。在Linux机器上,我仍然无法将客户端编码设置为WIN1252。这是错误消息:

FATAL:  conversion between WIN1252 and LATIN1 is not supported
Run Code Online (Sandbox Code Playgroud)

变量 client_encoding 在 Linux 机器上最初设置为 UTF8,所以我不知道 LATIN1 来自哪里。除非不支持 WIN1252,否则 postgres 会尝试将其转换为 latin1,因为这是最接近它的东西,并且由于某些字符不匹配而无法实现?

postgresql windows linux

5
推荐指数
2
解决办法
1万
查看次数

如何确定 postgres 数据库是否包含 GiST 索引以及什么类型?

有没有办法轻松检查 PostgreSQL 数据库是否有任何 GiST 索引以及它们是什么类型?

postgresql postgresql-9.2 gist-index

2
推荐指数
1
解决办法
333
查看次数

标签 统计

postgresql ×2

gist-index ×1

linux ×1

postgresql-9.2 ×1

windows ×1