使用 pgadmin4 将 csv 文件从本地计算机导入到 postgresql docker 容器

问题描述 投票:0回答:2

我正在学习使用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: [email protected]
      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]权限被拒绝:'/var/lib/pgadmin/storage/admin_admin.com/name.basics.tsv'。

还有比这些更好的导入表格的方法吗?我在这里犯了什么错误?我怎样才能将这个

docker-compose.yml
Dockerfile
合并到一个
docker-compose.yml
文件中。

postgresql docker docker-compose pgadmin-4
2个回答
1
投票

您可以从 PgAdmin GUI 上传文件。

这是一篇关于如何做到这一点的好文章

pgadmin 4 enter image description here

早期的 pgadmin

enter image description here


0
投票

我不知道如何使文件可供 docker 容器使用。不过这个解决方案有效。您不需要使用 pgadmin。

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

© www.soinside.com 2019 - 2024. All rights reserved.