我有一个使用 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 数据库是否有任何 GiST 索引以及它们是什么类型?