PostgreSQL 容器内执行 SQL 文件
1. 直接连接容器执行
psql \
-d <数据库名> \ # 数据库名称
-U <用户名> \ # 用户账号
-f <文件绝对路径> # SQL脚本路径
[--password=<密码>] # 可选参数
示例操作
# Linux/macOS终端
docker exec -it postgres_container psql -d mydb -U admin -f /scripts/init.sql
2. 利用容器初始化机制
执行原理
PostgreSQL容器通过/docker-entrypoint-initdb.d/目录实现初始化脚本自动化执行
# 1. 创建初始化目录
mkdir -p ./docker-entrypoint-initdb.d/
# 2. 放置SQL文件
cp ./init.sql ./docker-entrypoint-initdb.d/
# 3. 构建镜像(Dockerfile示例)
FROM postgres:14
# 4. 启动容器
docker run -d \
--name my_postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-v ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d/ \
postgres:14
关键参数详解
参数 类型 说明
-d 或 --dbname String 目标数据库名称
-U 或 --username String PostgreSQL用户名(默认postgres)
-f 或 --file String 要执行的SQL文件路径
-W 或 --password String 强制密码认证(不推荐明文传输)
-v 或 --volume String 本地目录挂载到容器的映射关系
批量执行脚本
# Linux/macOS终端
for sql in ./scripts/*.sql; do
docker exec -it postgres_container psql -d mydb -U admin -f "$sql"
done
脚本执行日志
# 实时监控执行日志
docker logs -f postgres_container 2>&1 | tee execution.log
更多推荐


所有评论(0)