首页 > 解决方案 > 使用 pgadmin4 将 csv 文件从本地机器导入到 postgresql docker 容器

问题描述

我正在学习使用 docker。我正在使用 docker 使用 postgresql 和 pgadmin4 设置数据库。我写了一个docker-compose.yml文件如下,

version: '3.8'
services:
  db:
    container_name: postgres
    image: postgres
    restart: always
    volumes: 
      - ${HOME}/Desktop/dbms-2/:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: test_db
    ports:
      - "5432:5432"
    build:
      context: .
      dockerfile: Dockerfile 
  pgadmin:
    container_name: pgadmin4
    image: dpage/pgadmin4
    restart: always
    volumes: 
      - ${HOME}/Desktop/dbms-2/:/var/lib/pgadmin4/storage
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
      - "5050:80"

还有一个 docker 文件,用于在 Postgres 中启动 SQL 脚本,如下所示,(我有docker-entrypoint-initdb.d子目录并且docker-compose.yml在同一个根目录中。)

FROM postgres:latest
COPY docker-entrypoint-initdb.d/*.sql /docker-entrypoint-initdb.d/
RUN chmod a+r /docker-entrypoint-initdb.d/*
EXPOSE 6666

现在我的 csv 文件包含本地文件系统中另一个目录中的表。/var/lib/pgadmin/storage/admin_admin.com/当我在将这些文件复制到目录后尝试从 pgAdmin4 GUI 导入它们时${HOME}/Desktop/dbms-2/,我得到了一个

[Errno 13] 权限被拒绝:'/var/lib/pgadmin/storage/admin_admin.com/name.basics.tsv'。

有没有比这些更好的导入表格的方法?我在这里犯了什么错误?以及如何将其合并docker-compose.ymlDockerfile一个docker-compose.yml文件中。

标签: postgresqldockerdocker-composepgadmin-4

解决方案


推荐阅读