es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í?

Tags:  , , ,

Answer

  1. Avatar for 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:

    \connect bypass;
    

    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í:

    CREATE USER bypass;
    CREATE DATABASE bypass;
    GRANT ALL PRIVILEGES ON DATABASE bypass TO bypass;
    
    \connect bypass;
    
    CREATE SCHEMA bypass_project;
    
    CREATE TABLE bypass_project.Bypass_Data (
        id serial PRIMARY KEY,
        Date_Time TIMESTAMP,
        Module VARCHAR(25),
        Area VARCHAR(25)
    );
    

    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”.

Comments are closed.