如何在Docker化的PostgreSQL 9.6中导入数据库架构与数据
将数据库架构与数据导入PostgreSQL 9.6 Docker容器的操作指南
看起来你已经顺利在PostgreSQL 9.6的Docker容器中创建了目标数据库,通过执行docker exec <container> psql -U <user> postgres -l命令也确认了数据库的存在,返回的数据库列表结果如下:
Name | Owner | Encoding | Collate | Ctype | Access privileges -------------------+--------------------+----------+------------+------------+----------------------- <database> | <user> | UTF8 | en_US.utf8 | en_US.utf8 | postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
接下来你可以按照以下步骤完成数据库架构和数据的导入:
方法一:复制SQL文件到容器后导入
将本地SQL文件复制到Docker容器内
假设你的架构文件是schema.sql,数据文件是data.sql,先把它们复制到容器的临时目录:docker cp /local/path/to/schema.sql <container>:/tmp/ docker cp /local/path/to/data.sql <container>:/tmp/导入数据库架构
执行命令将架构文件导入到目标数据库:docker exec <container> psql -U <user> -d <database> -f /tmp/schema.sql导入数据库数据
架构导入完成后,再导入数据文件:docker exec <container> psql -U <user> -d <database> -f /tmp/data.sql
方法二:直接通过管道导入(无需复制文件)
如果你的SQL文件是压缩格式(比如.sql.gz),或者不想复制文件到容器,可以直接通过管道传输导入,这样更高效:
# 导入压缩的SQL文件 cat /local/path/to/dump.sql.gz | gunzip | docker exec -i <container> psql -U <user> -d <database> # 导入未压缩的SQL文件 cat /local/path/to/dump.sql | docker exec -i <container> psql -U <user> -d <database>
注意:记得替换命令中的<container>、<user>、<database>为你实际的容器ID/名称、数据库用户和目标数据库名称。
内容的提问来源于stack exchange,提问作者Don Giulio
相关产品推荐
相关产品推荐

