Pg_restore在终端中没有错误,但似乎没有改变任何东西

时间:2014-12-04 09:38:51

标签: postgresql psql

在为测试目的创建新数据库时,我在使用pg_restore时遇到了问题。

我做了什么:

  • 我从我的每日备份中获取了使用pg_dump oldDB -f /some/directory/oldDUMP.dmp创建的转储文件

  • 我已登录postgres用户并使用createdb -T template0 newDB

  • 创建了新的数据库
  • 然后我尝试使用(在使用我的oldDUMP.dmp文件的文件夹中)pg_restore -d newDB oldDUMP.dmp但是输出告诉我,因为转储是在txt中,那么我应该登录到psql

  • 我以postgres(psql)身份登录并再次输入pg_restore -d newDB oldDUMP.dmp。什么都没有出现(似乎有效)但没有差异 - 测试数据库仍然是空的。

我试图从其他用户那里做同样的事情,并尝试登录到psql到newDB(因为据我所知,唯一的psql命令登录到postgres,因为我在Linux上以postgres身份登录)仍然没有差异。对于某些可能有错误的日志,我不确定在哪里查找。 我一直担心我以某种方式压倒了一些旧数据库,但我怀疑这是可能的。

知道我做错了什么吗? 我是Postgresql / psql(和Linux)的新手,所以它可能是一个非常基本的问题,但我无法在网上找到这样的问题。

1 个答案:

答案 0 :(得分:0)

  

但输出告诉我,因为dump是在txt中,那么我应该登录到psql

您需要将psql脚本作为输入。像这样:

psql < oldDUMP.dmp
  

我以postgres(psql)身份登录并再次键入pg_restore -d newDB oldDUMP.dmp。什么都没有出现(似乎有效)但没有差异

您是否在psql提示符下键入pg_restore?那是错误的地方。 pg_restore是一个程序,而不是SQL语句。没有发生任何事情的原因可能是因为您忘记使用;终止语句 - 如果这样做,您将收到SQL语法错误。

相关问题