You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中PostgreSQL加载CSV路径配置及SQL初始化失败求助

解决Docker PostgreSQL的两个问题

问题1:设置路径加载CSV文件到PostgreSQL容器

  • 本地创建存放CSV的目录(比如./csv),将retail.csv放入该目录
  • 修改docker-compose.yml的volumes配置,添加本地CSV目录到容器的挂载:
    services:
      postgres:
        # 其他配置保持不变
        volumes:
          - db_data:/var/lib/postgresql/data
          - ./csv:/container-csv  # 本地csv目录挂载到容器内指定路径
          - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d  # 同时挂载初始化脚本目录(解决问题2)
    
  • 更新SQL文件中的COPY路径为容器内的挂载路径:
    COPY retail.user_purchase(invoice_number,stock_code,detail,quantity,invoice_date,unit_price,customer_id,country)
    FROM '/container-csv/retail.csv' DELIMITER ','  CSV HEADER;
    

问题2:docker-entrypoint-initdb.d目录下的SQL未执行

核心原因及解决步骤

  • 未挂载本地脚本目录到容器
    你手动创建了本地docker-entrypoint-initdb.d目录,但未在docker-compose.yml中挂载到容器内对应路径,导致容器无法读取脚本。解决方法就是在volumes中添加上述挂载配置。

  • 已有数据卷导致初始化不重复执行
    PostgreSQL官方镜像仅在**第一次初始化数据库(数据卷为空时)**执行docker-entrypoint-initdb.d内的脚本。若之前启动过容器,db_data卷已存在数据库数据,脚本不会再次运行。解决步骤:

    1. 停止并删除容器:docker-compose down
    2. 删除现有命名卷:先通过docker volume ls查看卷名(通常是项目名_db_data),再执行docker volume rm <卷名>
    3. 重新启动容器:docker-compose up -d

验证执行状态

容器启动后,查看日志确认脚本执行情况:

docker logs postgres

若日志中出现running /docker-entrypoint-initdb.d/xxx.sql字样,说明脚本已成功执行。

内容的提问来源于stack exchange,提问作者Chillibeef99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:34:43