使用pgadmin4将本地CSV文件导入到PostgreSQL Docker容器中

4

我正在学习使用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"


一个用于在Postgres中运行SQL脚本的docker文件如下所示,(我在同一根目录下有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/${HOME}/Desktop/dbms-2/目录复制到pgAdmin4 GUI中进行导入时,出现了以下错误:

[Errno 13] Permission denied: '/var/lib/pgadmin/storage/admin_admin.com/name.basics.tsv'.

是否有更好的导入表格的方法?我犯了什么错误?如何将docker-compose.ymlDockerfile合并为一个docker-compose.yml文件?

2个回答

0

我一直无法弄清楚如何将文件提供给Docker容器。不过这个解决方案可行。您无需使用pgadmin。

docker exec -i postgrescontaineer psql -U postgres mydatabase < /home/user/db.sql


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接