主页

在 docker postgres 中导入整个数据库

2024-01-04 06:00PM

参考:https://linlin.fun/blog/1208

1. 先查看 docker 中运行的 postgres

$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED        STATUS       PORTS      NAMES
4510a9e8d123   postgres   "docker-entrypoint.s…"   18 hours ago   Up 5 hours   5432/tcp   objective_jang

2.前提是已经备份过数据库的数据,如果没有备份可以使用命令备份:

docker exec -t postgres_container pg_dump -U postgres mydb > /path/to/backup.sql

eg:

root@ali-anquan-2:~# docker exec -t 4510a9e8d123 pg_dump -U postgres dongtaipaifang > /tmp/dongtaipaifang20240307.sql
root@ali-anquan-2:~# cd /tmp/
root@ali-anquan-2:/tmp# ls -altrh
total 89M
-rwxr-xr-x  1 root root 2.0M Dec 12 16:17 kdevtmpfsi
drwxr-xr-x  2 root root 4.0K Dec 12 16:17 .ICEd-unix
drwxr-xr-x 23 root root 4.0K Dec 12 16:27 ..
drwxr-xr-x  3 root root 4.0K Dec 14 16:33 wpscan
drwxr-xr-x  2 root root 4.0K Dec 16 12:45 hsperfdata_root
-rw-r--r--  1 root root  94K Jan  3 22:07 largest111
drwxr-xr-x  3 root root 4.0K Jan  4 09:29 v8-compile-cache-0
drwxrwxr-x  3 root root 4.0K Mar  1 14:18 build_old
-rw-r--r--  1 root root  82M Mar  5 20:10 largest
drwxrwxr-x  3 root root 4.0K Mar  6 16:15 build
-rw-r--r--  1 root root 4.8M Mar  7 09:04 dongtaipaifang20240307.sql
drwxr-xr-x  8 root root 4.0K Mar  7 09:04 .

1) postgres_container 要替换为你的 CONTAINER ID

2) mydb 替换为你的要备份的数据库名称

3) /path/to/ 替换为你要备份的文件路径

4) backup.sql 替换为你要备份的文件名称

3.然后使用docker cp 把docker外部的文件复制到docker内部:

docker cp /path/to/backup.sql postgres_container:/backup.sql

1) /path/to/ 替换为你刚刚备份的文件路径

2) backup.sql 替换为你要备份的文件名称

4.最后导入数据即可:

docker exec -t postgres_container psql -U postgres -d mydb -f /backup.sql

1) postgres_container 要替换为你的 CONTAINER ID

2) mydb 替换为你的要导入的数据库名称

3) backup.sql 替换为你要导入的文件名称

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论