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.

Elitmiar
la source

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
Bohème
la source
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 
RunningAdithya
la source
41

Une solution programmatique:

SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'yourdb';
Peter Eisentraut
la source
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
Greenisha
la source
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.

AMADANON Inc.
la source
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

Basil Bourque
la source