Obtenir le codage d'une base de données Postgres


141

J'ai une base de données et j'ai besoin de connaître l'encodage par défaut de la base de données. Je veux l'obtenir à partir de la ligne de commande.

Réponses:


175

Depuis la ligne de commande:

psql my_database -c 'SHOW SERVER_ENCODING'

De l'intérieur psql, un IDE SQL ou une API:

SHOW SERVER_ENCODING

N'est-ce pas le paramètre au niveau du serveur (le paramètre par défaut utilisé pour les bases de données nouvellement créées) plutôt que le paramètre au niveau de la base de données / catalogue demandé dans la question?
Basil Bourque

4
Notez qu'à partir de psql, il doit y avoir un point-virgule à la fin. ie SHOW SERVER_ENCODING;
Jon Bernhardt

49

Méthode 1:

Si vous êtes déjà connecté au serveur db, copiez et collez simplement ceci.

SHOW SERVER_ENCODING;

Résultat:

  server_encoding 
-----------------  
UTF8

Pour l'encodage client:

 SHOW CLIENT_ENCODING;

Méthode 2:

Encore une fois, si vous êtes déjà connecté, utilisez ceci pour obtenir le résultat basé sur la liste

\l 

41

Une solution programmatique:

SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'yourdb';

32

Si vous souhaitez obtenir les encodages de la base de données:

psql  -U postgres -h somehost --list

Vous verrez quelque chose comme:

List of databases
           Name         |  Owner   | Encoding
------------------------+----------+----------
db1                     | postgres | UTF8

12

Parce qu'il y a plus d'une façon d'écorcher un chat:

psql -l

Affiche tous les noms de base de données, le codage et plus encore.


5

tl; dr

SELECT character_set_name 
FROM information_schema.character_sets 
;

Voie standard: information_schema

À partir du schéma standard SQL information_schema présent dans chaque base de données / catalogue, utilisez la vue définie nommée character_sets. Cette approche doit être portable dans tous les systèmes de base de données standard .

SELECT * 
FROM information_schema.character_sets 
;

Bien que le nom soit au pluriel, il n'affiche qu'une seule ligne, rapportant sur la base de données / catalogue actuel.

capture d'écran de pgAdmin 4 avec les résultats de la requête ci-dessus

La troisième colonne est character_set_name:

Nom du jeu de caractères, actuellement implémenté comme indiquant le nom de l'encodage de la base de données

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.