docker postgres数据导入

用django自己的dumpdata命令导入数据,总是碰到各种外键及权限问题。直接用psql命令试试

导出:

进入要获取备份的容器 docker docker exec -u root -it 容器名 /bin/bash

备份

pg_dump -h localhost -p 5432 -U laonan xxx(数据库名) > /数据库dump备份文件目录/laonan-data-20201216-0200.bak

先进入要恢复数据的容器清空数据


docker docker exec -u root -it 容器名 /bin/bash

psql -U database_user -W database_name

//删除public模式以及模式里面所有的对象
DROP SCHEMA public CASCADE;
//创建public模式
CREATE SCHEMA public;

记得检查postgres容器是否停了,停了启动一下

把备份文件复制到容器内:

docker cp laonan-data-20201216-0200.bak laonan_db_container:/root/

最后

docker exec laonan_db_container psql -U liudehua -d laonan_db -f /root/laonan-data-20201216-0200.bak
老楠 :
如果避免外键冲突,可以考虑用--natural-foreign --natural-primary 参数。ref: https://www.coderedcorp.com/blog/how-to-dump-your-django-database-and-load-it-into-/
For example, "name@something.com". If someone replies to you it will be via email.
For example, "http://someaddress.com"