Pour loguer uniquement dans le fichier de log la durée d'une requêtes qui dure plus de x millisecondes , il faut modifier le fichier de configuration postgresql.conf.

Chercher et modifier les valeurs des variables dans postgresql.conf :

  • log_statement = 'none'
  • log_duration = off
  • log_min_duration_statement = <valeur_en_millisecondes>

Exemple pour toutes requêtes supérieures à 4 secondes mettre :

 

log_statement = 'none'

log_duration = off

 

log_min_duration_statement = 4000

Pour une meilleur lisibilité, vou pouvez paramétrer la variable : log_line_prefix

exemples :

  1. log_line_prefix = '%m %d '
  2. log_line_prefix = '%t %d '

Explication des valeurs :

  •  %d : nom de la base de données ,
  • %m : date allant jusqu'à la miliseconde ,
  • %t ; date sans les millisecondes

Le but est de récupérer le résultat d'une requête dans un fichier dans un format particulier :

Pré-requis : se connecter avec un compte superuser, et aller dans la base concernée.

  •  Format csv avec entête des colonnes :

requête :

copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.csv>' with header csv ;

ex : copy (select * from alf_content_url ) to '/tmp/test.csv' with header csv ;

  • Format csv sans entête des colonnes :

requête :

copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.csv>' with csv ;

ex : copy (select * from alf_content_url ) to '/tmp/test.csv' with csv ;

  •  Format texte avec entête des colonnes et séparateur de notre choix :

requête :

copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.txt>' with header delimiter '<symbole>' csv ;

ex : copy (select * from alf_content_url ) to '/tmp/test.txt' with header delimiter '|' csv ;

Ce site est juste une compilation de notes qui sert d'aide mémoire.

Pour ne pas oublier