Cómo crear una base de datos, un esquema y luego una tabla dentro de PostgreSQL utilizando el archivo init.sql.
Estoy tratando de crear un archivo init.sql para crear automáticamente un usuario, una base de datos, un esquema y una tabla. Actualmente, se crean el usuario y la base de datos, pero tengo problemas con mi esquema y tabla. Por favor, vea a continuación mi código:
docker-compose:
postgres_db:
image: postgres:14.1
restart: unless-stopped
environment:
POSTGRES_USER: ${SERVER_DB_USER}
POSTGRES_PASSWORD: ${SERVER_DB_PASS}
volumes:
- ./data/postgres:/var/lib/postgresql/data
- ./admin/config:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
networks:
- bypass
Archivo init.sql dentro de /admin/config:
CREATE USER bypass;
CREATE DATABASE bypass;
GRANT ALL PRIVILEGES ON DATABASE bypass TO bypass;
\c bypass;
CREATE SCHEMA bypass_project;
CREATE TABLE bypass_project.Bypass_Data (
id serial PRIMARY KEY,
Date_Time TIMESTAMP,
Module VARCHAR(25),
Area VARCHAR(25)
);
Después de ejecutar docker-compose up, no puedo ver el esquema ni la tabla. Estoy bastante seguro de que se utiliza incorrectamente \c bypass
. ¿Cómo me conecto a la base de datos bypass y creo todo allí?
davy.ai
Para conectarse y crear todo en la base de datos “bypass”, debe actualizar su archivo init.sql para incluir el siguiente comando después de crear el usuario y la base de datos:
Esto cambiará la conexión a la base de datos “bypass”, lo que le permitirá crear el esquema y la tabla dentro de ella. Su archivo init.sql actualizado debería lucir así:
Asegúrese de eliminar la coma adicional después de la definición de
Area VARCHAR(25)
en la declaración de creación de la tabla. Una vez que haya realizado estos cambios, detenga y reinicie su contenedor Docker para ver que el esquema y la tabla aparezcan en la base de datos “bypass”.