从转储恢复Postgresql数据库失败

我有一个来自Postgresql数据库的转储文件。 但是,如果我在Windows下运行psql -U用户<db.sql,我就会得到

ERROR: missing data for column "x" 

对于某些行。 事情是,“x”的数据不会丢失。 我猜在“x”之前的列中有一些字符会以某种方式破坏导入,但我不知道它会是什么。

有任何想法吗? Postgre版本是8.3.7

编辑:如果恢复过程可以在遇到该行后正常继续,可以省略违规行。

编辑2:它出现罪魁祸首是转储中的Ctrl-Z字符(ascii 26),它们被解释为窗口(?)下的文件结束。

你有没有尝试传递文件使用-f标志而不是redirectinput? 也许你的控制台的redirect是怪异的:

 psql -U user -f db.sql 

考虑到它在Windows上,如果是这样的话,我不会感到惊讶。

你不应该有字符的任何麻烦 – 如果他们成功导出他们应该导入罚款。 是否有可能需要旧数据库服务器的架构?

如果你看转储文件,你可以find它窒息的线? 那里有什么奇怪的吗?

我无法从.sql转储(得到相同的错误),因为我的转储没有正确完成恢复(错误产生的转储,但不知何故,我没有注意到他们)。 因此,请务必仔细检查您是否有有效的转储文件!

尝试以自定义格式(-Fc)转储,然后使用pg_restore直接连接到数据库以恢复它。