6 python django postgresql docker docker-compose
我想将数据从 CSV 文件加载到 Docker 中的 PostgreSQL 数据库中。我跑:
docker exec -ti my project_db_1 psql -U postgres
Run Code Online (Sandbox Code Playgroud)
然后我选择我的数据库:
\c myDatabase
Run Code Online (Sandbox Code Playgroud)
现在我尝试myfile.csv将 Django 项目主目录中的数据加载到backend_data表中:
\copy backend_data (t, sth1, sth2) FROM 'myfile.csv' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
但是我得到错误:
myfile.csv: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在我看来,我尝试了所有可能的路径,但没有任何效果。任何想法我该如何解决?这是我的 docker-compose.yml:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
django:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
最简单的方法是将一个目录挂载到 postgres 容器中,将文件放入挂载的目录中,并在那里引用它。
我们实际上是在挂载pgdata目录,以确保即使我们重新创建 postgres docker 容器,postgres 数据仍然存在。所以,我的例子也将使用pgdata:
services:
db:
image: postgres
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- "<path_to_local_pgdata>:/var/lib/postgresql/data/pgdata"
Run Code Online (Sandbox Code Playgroud)
地方myfile.csv到<path_to_local_pgdata>(相对于目录包含的配置或绝对路径)。然后复制命令如下所示:
\copy backend_data (t, sth1, sth2) FROM '/var/lib/postgresql/data/pgdata/myfile.csv' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3176 次 |
| 最近记录: |