在为测试目的创建新数据库时,我在使用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)的新手,所以它可能是一个非常基本的问题,但我无法在网上找到这样的问题。
答案 0 :(得分:0)
但输出告诉我,因为dump是在txt中,那么我应该登录到psql
您需要将psql脚本作为输入。像这样:
psql < oldDUMP.dmp
我以postgres(psql)身份登录并再次键入pg_restore -d newDB oldDUMP.dmp。什么都没有出现(似乎有效)但没有差异
您是否在psql提示符下键入pg_restore
?那是错误的地方。 pg_restore
是一个程序,而不是SQL语句。没有发生任何事情的原因可能是因为您忘记使用;
终止语句 - 如果这样做,您将收到SQL语法错误。