从转储恢复 Postgresql 数据库失败

5 postgresql

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

 ERROR:  missing data for column "x"
Run Code Online (Sandbox Code Playgroud)

对于某些线路。问题是,“x”的数据并没有丢失。我猜“x”前面的列中有一些字符会以某种方式破坏导入,但我不知道它可能是什么。

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

编辑:如果在遇到该行后恢复过程可以正常继续,则可以省略有问题的行。

Edit2:看来罪魁祸首是转储中的 Ctrl-Z 字符(ascii 26),它们在 windows(?)下被解释为文件结尾。

Top*_*gio 5

您是否尝试过使用-f标志传递文件而不是重定向输入?也许您的控制台的重定向行为很奇怪:

psql -U user -f db.sql
Run Code Online (Sandbox Code Playgroud)

考虑到它在 Windows 上,如果是这种情况,我不会感到惊讶。


小智 1

您不应该对字符有任何问题 - 如果它们成功导出,那么它们应该可以正常导入。您是否也需要旧数据库服务器中的架构?

如果你查看转储文件,你能找到它阻塞的那一行吗?难道有什么奇怪的地方吗?