web-dev-qa-db-fra.com

postgres: créer une table dans la base de données à partir de la ligne de commande

J'essaie de créer une table en postgres, mais elle se retrouve dans la mauvaise base de données.

Voici ce que je fais: dans mon script sql, je crée d'abord un utilisateur et une base de données, puis une table. Le code expliquera plus:

drop database if exists sinfonifry;
drop role if exists sinfonifry;

-- create the requested sinfonifry user

create user sinfonifry createdb createuser password 'some_password';

-- create a sinfonifry database
create database sinfonifry owner sinfonifry;

DROP TABLE if exists sinf01_Host;

CREATE TABLE sinf01_Host
(
  Host_id bigserial NOT NULL, -- The primary key
  Host_ip inet NOT NULL, -- The IP of the Host
  Host_name character varying(255) NOT NULL, -- The name of the Host
  CONSTRAINT "PK_Host" PRIMARY KEY (Host_id )
)
WITH (
  OIDS=FALSE
);

ALTER TABLE sinf01_Host OWNER TO sinfonifry;

maintenant, cela fait partie d'un script automatisé, et est exécuté à partir de la ligne de commande, comme:

Sudo -u postgres psql < create_db.sql

et j'ai déjà créé l'utilisateur postgres sur le système.

Et voici le problème: la table se retrouve dans la base de données postgres, schéma public, pas dans la base de données sinfonifry, schéma public.

Comment puis-je créer la table dans la base de données que je souhaite?

Merci et bravo, f.

32
Ferenc Deak

Après l'émission de la commande create database, une connexion:

create database sinfonifry owner sinfonifry;
\connect sinfonifry
39
Clodoaldo Neto