问题描述
我有一台 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 表具有以下结构
我的 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 ..."