我用
pg_dump db_production > postgres_db.dump
然后使用scp将其复制到localhost。
现在当我导入我的本地db时,它给出了一个错误
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
使用命令行
pg_restore -d db_development postgres_db.dump
我用
pg_dump db_production > postgres_db.dump
然后使用scp将其复制到localhost。
现在当我导入我的本地db时,它给出了一个错误
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
使用命令行
pg_restore -d db_development postgres_db.dump
当前回答
psql -U <username> -d <database-name> -h <host-name> -f <backup.sql> . p
其他回答
来自pg_dump文档:
例子
将一个名为mydb的数据库转储到一个sql脚本文件:
$ pg_dump mydb > db.sql
要将这样的脚本重载到(新创建的)名为newdb的数据库中:
$ psql -d newdb -f db.sql
将数据库转储到自定义格式的归档文件中:
$ pg_dump -Fc mydb > db.dump
将数据库转储到目录格式的归档文件中:
$ pg_dump -Fd mydb -f dumpdir
将一个归档文件重新加载到一个名为newdb的(新创建的)数据库中:
$ pg_restore -d newdb db.dump
来自pg_restore文档:
例子
假设我们已经将一个名为mydb的数据库转储到一个自定义格式的转储文件中:
$ pg_dump -Fc mydb > db.dump
删除数据库并从转储中重新创建数据库:
$ dropdb mydb
$ pg_restore -C -d postgres db.dump
我也一直在为这个问题挣扎。这是dump和restore命令的组合,对我来说很有效:
pg_dump -Ft -C -h database_host -U username database > DATA.dump
恢复
pg_restore -x --no-owner -d database DATA.dump
如果您想在您的DB中保持相同的访问权限(acl),请删除-x标志。为此,在数据库中必须具有相同的角色和用户。
https://www.postgresql.org/docs/15/app-pgdump.html
https://www.postgresql.org/docs/15/app-pgrestore.html
如果使用pg_dump和-Fp进行明文备份,则使用以下命令:
cat db.txt | psql dbname
将所有数据复制到名为dbname的数据库
psql -U <username> -d <database-name> -h <host-name> -f <backup.sql> . p
创建备份时,可能希望在另一个网络中恢复它或创建远程恢复。
我们需要使用——format=custom [-Fc]创建一个备份文件,然后使用pg_restore恢复它。我们可以使用连接字符串postgresql://<user>:<pass>@localhost:5432/<dbname>并替换<user>, <pass>和<dbname>与您的信息。
pg_dump -v -Fc \
postgresql://<user>:<pass>@localhost:5432/<dbname> \
> db-20211122-163508.sql
要恢复,我们将使用——clean [-c]和——create [-c]来调用它,在恢复之前删除数据库。将<用户>,<主机>,<端口>,<dbname>替换为您的信息。
pg_restore -vcC \
-U <user> \
-h <host> \
-p <port> \
-d <dbname> \
< db-20211122-163508.sql