Ceci est une ancienne révision du document !
Postgresql
Installation sur ubuntu 20.04
sudo apt install postgresql postgresql-client
Etat du service :
systemctl status postgresql.service
Configuration générale
/etc/postgresql/12/main/postgresql.conf
Mot de passe admin :
sudo su - postgres
psql -c "alter user postgres with password 'monmot2passe'"
Ou passer en commande SQL avec :
psql
Voir les bases installées :
sudo -u postgres psql -l
Et d'une manière générale :
sudo -u postgres -c 'commande_sql'
Commandes depuis le compte utilisateur postgres
Export de base :
pg_dump -U username dbname> dbexport.pgsql pg_dump -U db_user -W -F t db_name> /path/to/your/file/dump_name.tar
Import de base :
psql -U username dbname <dbexport.pgsql
Restorer un dump :
pg_restore -d db_name /path/to/your/file/dump_name.tar -c -U db_user
Effacer une base :
psql -c 'drop database cemea'
Pour Base Graf ( cemea.sqlfc dans /var/lib/postgresql/ ) depuis le compte postgres (basse cemea à créer) :
psql -c 'create database cemea' pg_restore -d cemea cemea.sqlfc -c -U postgres;
Commandes de base de psql
psql mabase
Et les raccourcis
\l = liste des bases \d = liste des tables \q = quitter \h = aide USE labase = pour se connecter sur la base \c labase = pour se connecter sur la base \dt = voir les tables de la base # \dt+ : pour plus d'infos.
Structure d'une table et données
\d+ nomdetable
Consulter des données avec des requêtes SQL classiques :
SELECT * from table UDPATE table SET champ1 = valeur1, champ2 = valeur2 WHERE condition;
Pour voir tous les utilisateurs:
select * from user;
Créer une base de données (pour Graf) :
create database cemea;
Se connecter à une base
psql \c mabasecemea;
Compter des champs :
select count(*) from cemea_course;
Bug import Base SQL de Graf
La base de données doit être conforme à celle-ci :
psql -c 'create database cemea' psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- cemea | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
Or sur une Debian 10, l'import brut comporte ce type de base :
psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+-----------+---------+-------+----------------------- cemea | postgres | SQL_ASCII | C | C |
L'encodage C pose des problèmes à l'import comme :
pg_restore: error: COPY failed for table “account_invoice_line”: ERROR: value too long for type character varying(255)
CONTEXT: COPY account_invoice_line, line 82441, column product_name: “Actions de formations dans le prolongement du séminaire national Ceméa du 3 au
5 février 2020 : …”
La solution
dpkg-reconfigure locales
Et choisir fr_FR.UTF-8
Puis :
psql -c "create database cemea WITH OWNER "postgres" ENCODING 'UTF8' LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' template = 'template0';" CREATE DATABASE postgres@postgresql:~$ psql -l Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès -----------+--------------+-----------+-----------------+--------------+----------------------- cemea | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |