Получение кодировки базы данных Postgres

У меня есть база данных, и мне нужно знать кодировку по умолчанию для базы данных. Я хочу получить его из командной строки.

Ответ 1

Из командной строки:

psql my_database -c 'SHOW SERVER_ENCODING'

Внутри psql, SQL IDE или API:

SHOW SERVER_ENCODING

Ответ 2

Способ 1:

Если вы уже вошли на сервер db, просто скопируйте и вставьте это.

SHOW SERVER_ENCODING;

Результат:

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

Для клиентского кодирования:

 SHOW CLIENT_ENCODING;

Способ 2:

Снова, если вы уже вошли в систему, используйте это, чтобы получить результат на основе списка.

\l 

Ответ 3

Программное решение:

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

Ответ 4

Если вы хотите получить кодировки базы данных:

psql  -U postgres -h somehost --list

Вы увидите что-то вроде:

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

Ответ 5

TL;DR

SELECT character_set_name 
FROM information_schema.character_sets 
;

Стандартный способ: information_schema

Из стандартная SQL-схема information_schema присутствует в каждой базе данных/каталоге, используйте определенное представление с именем character_sets. Этот подход должен быть переносимым через все стандартные системы баз данных.

SELECT * 
FROM information_schema.character_sets 
;

Несмотря на то, что имя множественное, оно показывает только одну строку, сообщая о текущей базе данных/каталоге.

снимок экрана pgAdmin 4 с результатами запроса, показанным выше

Третий столбец character_set_name:

Название набора символов, в настоящее время реализованное как отображающее имя кодировки базы данных

Ответ 6

Потому что есть более чем один способ обрезать кошку:

psql -l

Показывает все имена базы данных, кодировку и т.д.