我在创建新数据库以进行测试时使用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(的新手,所以这可能是一些非常基本的问题,但我无法在Web中找到这样的问题。
但是输出告诉我,由于转储在 txt 中,那么我应该登录 psql
您需要为 psql 提供脚本作为输入。像这样:
psql < oldDUMP.dmp
我以postgres(psql(的身份登录并再次输入pg_restore -d newDB oldDUMP.dmp。什么也没出现(似乎有效(,但没有区别
您是否在 psql 提示符中键入了pg_restore
?那是错误的地方。 pg_restore
是一个程序,而不是一个SQL语句。什么也没发生的原因可能是因为你忘记用;
终止语句 - 如果你这样做,你会得到一个SQL语法错误。