[PostgreSQL] Quelques infos en vrac ..

 

Quelques infos en vrac ..

 

 


Exporter le contenu d’une requête vers un fichier pst

begin;
\o /tmp/le_fichier_de_sorti.csv
\f ' ; '
\a
\i /tmp/la_requete.sql
commit

 


Installation de PostgreSQL sur Ubuntu

$ sudo apt-get install postgresql postgresql-contrib

 


Connexion a postgres

# su - postgres

postgres@lnx:~$

ou

$ sudo -i -u postgres

postgres@lnx:~$

 


Création d’une db

postgres@lnx:~$ createdb db_de_test

 


Se connecter a la db (le prompt changera pour le nom de la db)

postgres@lnx:~$ psql db_de_test
psql (9.5.12)
Type "help" for help.

db_de_test=#

 


Création d’une table

Dans l’exemple, je crée une table d’utilisateurs avec id, prénom, nom et adresse émail

db_de_test=# CREATE TABLE utilisateurs (id int, prenom varchar, nom varchar, adresse_email varchar);

cela renverra

CREATE TABLE

 

Puis nous renseignons cette table avec les valeurs suivantes

db_de_test=# INSERT INTO utilisateurs VALUES (1, 'Pierre', 'doras', 'pierre.doras@domaine.tld');

cela renverra

INSERT 0 1

 

db_de_test=# INSERT INTO utilisateurs VALUES (2, 'Moussa', 'toure');

cela renverra

INSERT 0 1

 

db_de_test=# INSERT INTO utilisateurs VALUES (3, 'Lei', 'Wu', 'lei.wu@domaine.tld');

cela renverra

INSERT 0 1

 

Enfin, nous listons la table pour voir si tout est correct.

db_de_test=# SELECT * FROM utilisateurs;
id | prenom | nom   | adresse_email 
----+--------+-------+--------------------------
 1 | Pierre | doras | pierre.doras@domaine.tld
 2 | Moussa | toure | 
 3 | Lei    | Wu    | lei.wu@domaine.tld
(3 rows)

 


Modifier une ligne du schéma utilisateurs de la db db_de_test

On s’aperçoit que Moussa n’a pas d’adresse émail, on peut modifier la ligne avec la commande update.

db_de_test=# update utilisateurs set adresse_email = 'moussa.toure@domaine.tld' where id = 2 ;

Ce qui renvoi

UPDATE 1

 

Si on relance un select * from utilisateurs, la ligne est bien modifié.

 

Il est aussi possible de changer toute ou une partie des champs, voici une requête pour cela, imaginons que que Pierre Doras décide de changer de sexe, se marie et change de nom (soyons fou !)

2 façons d’écrire cette requête.

avec un saut de ligne pour une meilleure compréhension

db_de_test=# UPDATE utilisateurs
SET prenom = 'Solange',
 nom = 'Eustache',
 adresse_email = 'solange.eustache@domaine.tld'
WHERE id = 1;

Ou

UPDATE utilisateurs SET prenon = 'Solange', nom = 'Eustache', adresse_email = 'solange.eustache@domaine.tld' WHERE id = 1;

 

Le schéma est bien modifié.

db_de_test=# select * from utilisateurs;
 id | prenom | nom | adresse_email 
----+---------+----------+------------------------------
 3 | Lei | Wu | lei.wu@domaine.tld
 2 | Moussa | toure | moussa.toure@domaine.tld
 1 | Solange | Eustache | solange.eustache@domaine.tld
(3 rows)

 


Begin, commit et rollback

/!\ /!\ /!\ Important /!\ /!\ /!\

Il est conseillé d’utiliser la commande begin; avant chaque instruction.

Celle ci permet d’exécuter les commandes, de voir les erreurs et de rollback si besoin ou de valider avec la commande commit;

Pour reprendre la doc officiel

BEGIN initie un bloc de transaction, c'est-à-dire que toutes les instructions apparaissant après la commande BEGIN sont exécutées dans une seule transaction jusqu'à ce qu'un COMMIT ou ROLLBACK explicite soit exécuté. Par défaut (sans BEGIN), PostgreSQL™ exécute les transactions en mode « autocommit », c'est-à-dire que chaque instruction est exécutée dans sa propre transaction et une validation (commit) est traitée implicitement à la fin de l'instruction (si l'exécution a réussi, sinon une annulation est exécutée).

 


Suppression d’une db

/!\ La db et tout ce qu’elle contient sera intégralement supprimé.

taper la commande

postgres@lnx:~$ dropdb db_de_test;

Ce qui renverra en voulant se connecter

postgres@lnx:~$ psql db_de_test

psql: FATAL: database “db_de_test” does not exist

 


Lister les db

# psql -l
List of databases
 Name | Owner | Encoding | Collate | Ctype | Access privileges 
------------+----------+----------+-------------+-------------+-----------------------
 db_de_test | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | 
 postgres   | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | 
 template0  | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
            |          |      |             |             | postgres=CTc/postgres
 template1  | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
            |          |      |             |             | postgres=CTc/postgres
(4 rows)

 


Pour lister le schéma d’une table

db_de_test=# select * from utilisateurs;
id | prenom | nom | adresse_email 
----+--------+-------+--------------------------
 1 | Pierre | doras | pierre.doras@domaine.tld
 2 | Moussa | toure | moussa.toure@domaine.tld
 3 | Lei    | Wu    | lei.wu@domaine.tld
(3 rows)

 


Pour créer un user

db_de_test=# CREATE ROLE "nom_du_user" WITH LOGIN;

 


Lister les schéma

db_de_test=# \dn
 List of schemas
 Name   | Owner 
--------+----------
 public | postgres
(1 row)

Ou lister les schemas/permissions

db_de_test=# \dn+
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description       
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         | 
(1 row)

 


Lister les utilisateurs

db_de_test=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 bef       |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

ou lister un utilisateur

db_de_test=# \du bef
           List of roles
 Role name | Attributes | Member of 
-----------+------------+-----------
 bef       |            | {}

 


Lister schema/relation/table

db_de_test=# \d

 


Pour afficher l’historique

db_de_test=# \s

 


Pour lister une table

db_de_test=# select * from utilisateurs;
id  | prenom  | nom      | adresse_email 
----+---------+----------+------------------------------
 3  | Lei     | Wu       | lei.wu@domaine.tld
 2  | Moussa  | toure    | moussa.toure@domaine.tld
 1  | Solange | Eustache | solange.eustache@domaine.tld
(3 rows)

 


Créer une requête dans un fichier et l’importer

Sortir de la db, éditer un fichier et y renseigner sa requête

postgres@lnx:~$ vim test_requete

Puis pour l’exécution il faudra se reconnecter a la db et lancer la commande suivante (ne pas oublier de faire un begin; avant)

db_de_test=# \i /var/lib/pgsql/test_requete

 


 

 

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.