问题描述
我运行了以下命令来创建转储文件
sudo docker-compose up -d db
sudo docker exec –i container_name pg_dump –username username database_name > desired_path/dump.sql
然后我将该文件添加到docker-compose.override.yml
文件中的现有卷
version: '3.7'
services:
db:
container_name: seqdb-db-container
volumes:
- ./dump.sql:path_to_volume_used_by_container
ports:
- 5432:5432
最后我跑
sudo docker exec –i container_name psql –username username database_name < path_to_dump_file
,我收到以下错误消息:
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
我想使用docker exec pg_restore
而不安装psql
。有解决方案吗?还是我的卷安装不正确?
解决方法
来自pgdump docs:
-F格式
--format = format
选择输出格式。格式可以是以下之一:p
普通
输出纯文本SQL脚本文件(默认)。
因此pg_dump
的默认输出格式是纯文本SQL文件(由于您将输出称为dump.sql
而出现在您期望的位置)
pg_restore是一种实用程序,用于从pg_dump创建的非明文格式之一的存档中恢复PostgreSQL数据库。
因此,应根据您的操作来预测错误input file appears to be a text format dump. Please use psql
。 pg_restore
不支持还原纯文本转储-还原那些应该使用psql
(根据错误)。
快速解决方案是在使用pg_dump
(例如--format=custom
)时请求非纯文本格式。但是,您不愿使用psql
对我有些困惑?