我创建了带有postgres的docker容器和带有选项的adminer:
lprods_db:
image: postgres:9.6.10-alpine
ports:
- '5433:5432'
restart: always
environment:
POSTGRES_USER: 'postgres'
POSTGRES_PASSWORD: '1'
POSTGRES_DB: 'wprods'
volumes:
- ./init:/docker-entrypoint-initdb.d/
lprods_adminer:
image: adminer
restart: always
ports:
- 8083:8080
links:
- lprods_db
Run Code Online (Sandbox Code Playgroud)
我需要将我的转储上传到我的操作系统控制台中运行的lprods_db实例的wprods db:
cat /mnt/_work_sdb8/wwwroot/lar/lprods/__SQL/wprods_2017_10_23.sql | docker exec -i lprods_docker_lprods_db_1 psql -Upostgres
Run Code Online (Sandbox Code Playgroud)
其中/mnt/_work_sdb8/wwwroot/lar/lprods/__SQL/wprods_2017_10_23.sql是我的OS路径中的sql dump和lprods_docker_lprods_db_1 - db容器
我看到postgres输出数据的命令输出没有错误,例如:
CREATE INDEX
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
Run Code Online (Sandbox Code Playgroud)
通过在http://127.0.0.1:8083/打开adminer 我在指定的db中找不到任何表:https: //imgur.com/a/n6Tk4YE我希望我的数据可以导入到wprods.public中.是这样吗?怎么了?
这里可以使用一些FLUSH命令吗?
谢谢!
您docker-compose.yml和您使用的命令似乎完全正确 - 我在第一次尝试时启动了所有内容.
这里唯一看似陷阱的是pg_dump输出对数据库名称一无所知.来自文档:
脚本转储是纯文本文件,包含重建数据库所需的SQL命令
因此,当您通过psql需要显式指定目标数据库名称来恢复它时,在您的情况下命令将如下所示
cat /mnt/_work_sdb8/wwwroot/lar/lprods/__SQL/wprods_2017_10_23.sql | docker exec -i lprods_docker_lprods_db_1 psql -Upostgres wprods
Run Code Online (Sandbox Code Playgroud)
否则你将填充默认postgres数据库