我创建了带有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
我需要将我的转储上传到我的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
哪里
/mnt/_work_sdb8/wwwroot/lar/lprods/__sql/wprods_2017_10_23.sql是我操作系统路径中的sql dump
和
lprods_docker_lprods_db_1 – 数据库容器
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
通过在http://127.0.0.1:8083/打开adminer,我没有在指定的db:https://imgur.com/a/n6Tk4YE中找到任何表
我希望我的数据可以导入到wprods.public中.是这样吗?
怎么了?
这里可以使用一些FLUSH命令吗?
谢谢!
您的docker-compose.yml和您使用的命令似乎完全正确 – 我在第一次尝试时启动了所有内容.
这里唯一看似陷阱的是pg_dump的输出对数据库名称一无所知.从docs:
Script dumps are plain-text files containing the sql commands
required to reconstruct the database
因此,当您通过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
否则你将填充默认的postgres数据库