У меня есть следующий docker-compose.yml
файл:
version: '3'
services:
postgres:
image: postgres
container_name: postgres
ports:
- "5431:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=anime
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
Эта конфигурация запускает базу данных Postgres.В томе я определил init.sql, который должен создать таблицу:
CREATE TABLE anime (
anime_id INT PRIMARY KEY,
title TEXT
);
Затем я хотел бы заполнить базу данных Postgres данными из файла CSV.
Я пыталсядобавьте еще один том в docker-compose:
- ./preload.sql:/preload/preload.sql
с этим сценарием:
copy anime FROM 'docker/data/AnimeList.csv' DELIMITER ',' CSV HEADER;
Файл CSV находится в папке data
, на том же уровне, что и docker-compose.yml
.
Но это не работает.База данных создана правильно, но в ней нет таблицы и данных.Когда я подключаюсь к контейнеру Docker, запускаю команду 'psql
и пытаюсь получить таблицу anime
, я получаю следующую ошибку:
Did not find any relation named "anime".
Мой вопрос: как предварительно загрузить контейнер Postgres с данными CSVфайл в docker-compose?