docker 操作postgresql和postgresql导入与导出数据

导出数据
//进入docker容器 postgres-db 容器名
docker exec -it postgres-db /bin/bash
//切换postgres用户
su - postgres
//导出命令
pg_dump -U postgres traffic > ./traffic.sql
//退出容器,进入宿主机
exit 两次
//从容器导出到宿主机
docker cp postgres-db:/var/lib/postgresql/traffic.sql ./
//通过ftcp,或者winscp下载文件到本地

导入数据
//从宿主机导入docker,通过winscp上传traffic.sql文件

//注意注意,将sql文件放入到quansheng-basic/postgresql/data下,容器和宿主机是映射的

//进入docker容器
docker exec -it postgres-db /bin/bash
//切换postgres用户
su - postgres
//进入到数据库中
psql
//查看数据库
\l
//如果存在库,则修改库名
ALTER DATABASE traffic RENAME TO traffic0815;
//改完名后,创建数据库
CREATE DATABASE traffic OWNER postgres;
问题:
ERROR: database “db1” is being accessed by other users
DETAIL: There are 17 other sessions using the database.
解决:
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname=‘traffic’ AND pid<>pg_backend_pid();
//再次执行修改库名操作即可

// 退出数据库,进入容器中
exit
//导入数据库
psql -U postgres -d traffic -a -f “/var/lib/postgresql/data/traffic.sql”;

你可能感兴趣的:(sql,postgresql,数据库,docker)