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

在Jupyter Lab中操作Docker部署的PostgreSQL建表时出现两类报错

Docker部署PostgreSQL导入数据报错解决方案

错误1:文件找不到

ERROR: could not open file "/home/heyoka/Schreibtisch/master/DE/data-engineering-infrastructure.git/workspace/data/departments.csv" for reading: No such file or directory
HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.

原因:PostgreSQL的COPY命令由容器内的数据库服务器进程执行,你指定的路径是宿主机本地路径,容器内部无法直接访问。

解决方法:

  • 方法一:改用psql客户端命令\copy,该命令由宿主机的psql客户端执行,可直接读取宿主机文件。只需将脚本中的COPY替换为\copy,无需修改文件路径。
  • 方法二:将宿主机数据目录挂载到Docker容器内。启动容器时添加挂载参数:
    sudo docker run -v /home/heyoka/Schreibtisch/master/DE/data-engineering-infrastructure.git/workspace/data:/container-data [其他启动参数] postgres
    
    之后把脚本中COPY的路径改为容器内的'/container-data/departments.csv'。

错误2:语法错误

ERROR: syntax error at or near ".."
LINE 1: ...

原因:脚本中的...是无效SQL语法,PostgreSQL无法识别该占位符。

解决方法:删除脚本中的...,替换为实际需要执行的SQL语句;若为省略的代码片段,补全完整的合法SQL即可。

修改后的示例脚本(使用\copy方案)

%%bash

cat <<"EOF" | sudo docker exec -i dbis-postgres-db-1 psql -U postgres

DROP DATABASE IF EXISTS satisfaction;
CREATE DATABASE satisfaction;
\c satisfaction;


CREATE TABLE department (
    id_dept SERIAL PRIMARY KEY,
    dept VARCHAR(50) NOT NULL,
    city VARCHAR(50) NOT NULL,
    zip_code INTEGER NOT NULL

);

\copy department 
    
FROM '/home/heyoka/Schreibtisch/master/DE/data-engineering-infrastructure.git/workspace/data/departments.csv'
WITH (
    FORMAT CSV,
    DELIMITER ',',
    HEADER false,
    NULL ''
);

# 此处添加其他需要执行的SQL语句,不要保留...
EOF

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:39:52