错误:在编码“WIN1252”中字节序列为 0x9d 的字符在加载备份时编码“UTF8”没有等效项

问题描述

我有一台 mac os 机器,我在上面使用以下命令备份了一个

psql -h localhost -U prices_root -d prices_deb -c "\copy 
(SELECT Feed_item_id,pubdate,link,guid,title,summary,content,author,Feed_id from Feed_items)   
TO 'prices_deb_Feed_items_dump.csv' with (format csv,header true,delimiter '^');"

我的 Feed_items 表具有以下结构

enter image description here

我的 Mac 机器已停止工作,我使用相同的用户密码等在 Windows 上再次创建了相同的数据库。我尝试使用以下命令从 CSV 数据转储中恢复该表中的数据

psql -h localhost -U ch_v3_root -d ch_v3_dev -c "\copy 
Feed_items(Feed_item_id,Feed_id) 
FROM 'prices_deb_Feed_items_dump.csv' with (format csv,delimiter '^');" 

它给了我这个错误

ERROR:  character with byte sequence 0x9d in encoding "WIN1252" has no equivalent in encoding "UTF8"
CONTEXT:  copY Feed_items,line 21

如果有人能帮我恢复这个数据库表,我将不胜感激。当我在 mac 上测试备份恢复时,它运行良好。在 Windows 上,我不断收到此错误

解决方法

您需要使用从 MacOS 计算机导出数据时使用的相同客户端编码。例如,如果是 Windows-1251,则在 Windows 命令行上可以执行

set PGCLIENTENCODING=WIN1251
psql ... -c "\copy ..."

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...