如何在执行pg_dump时忽略无效的字节序列

时间:2018-04-03 22:08:59

标签: postgresql pg-dump

我需要一种方法来在转储时忽略所有无效字符。

我定期从数百个来源获得超过一千张桌子,其中大部分质量都有问题。我将数据导入数据库的方式可以避免任何不正确或无效的编码。我没有必要修理它们。

但是当我备份我的数据库时,pg_dump会阻塞每一个。在我转到版本9.6之前,这似乎不是问题。

我有三个选择。当每个表窒息时去修复它们。运行一个进程以从每个表中的每个字段中去除所有非ascii内容。两者都需要时间并为我的备份程序添加一个步骤。

或者我可以找到一个只是告诉pg_dump停止这么挑剔的开关。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

PostgreSQL试图在编码方面100%准确,并且从版本到版本的检查变得越来越严格。这可以解释你观察到的内容。

PostgreSQL无法切换pg_dump来禁用编码检查。

如果你不关心编码,你应该使用数据库编码SQL_ASCII,但是仍然不允许在字符串中使用零字节(如果你有的话)。

您可以使用pg_basebackup的物理备份来解决您的紧急问题,但预计会遇到更多问题。