我需要一种方法来在转储时忽略所有无效字符。
我定期从数百个来源获得超过一千张桌子,其中大部分质量都有问题。我将数据导入数据库的方式可以避免任何不正确或无效的编码。我没有必要修理它们。
但是当我备份我的数据库时,pg_dump会阻塞每一个。在我转到版本9.6之前,这似乎不是问题。
我有三个选择。当每个表窒息时去修复它们。运行一个进程以从每个表中的每个字段中去除所有非ascii内容。两者都需要时间并为我的备份程序添加一个步骤。
或者我可以找到一个只是告诉pg_dump停止这么挑剔的开关。有什么办法吗?
答案 0 :(得分:0)
PostgreSQL试图在编码方面100%准确,并且从版本到版本的检查变得越来越严格。这可以解释你观察到的内容。
PostgreSQL无法切换pg_dump
来禁用编码检查。
如果你不关心编码,你应该使用数据库编码SQL_ASCII
,但是仍然不允许在字符串中使用零字节(如果你有的话)。
您可以使用pg_basebackup
的物理备份来解决您的紧急问题,但预计会遇到更多问题。