获取Postgres数据库的编码

Rol*_*and 127 postgresql

我有一个数据库,我需要知道数据库的默认编码.我想从命令行中获取它.

Boh*_*ian 156

从命令行:

psql my_database -c 'SHOW SERVER_ENCODING'
Run Code Online (Sandbox Code Playgroud)

从内部psql,SQL IDE或API:

SHOW SERVER_ENCODING
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在psql中,最后需要有一个分号。即`SHOW SERVER_ENCODING;` (4认同)

Run*_*hya 47

方法1:

如果您已经登录到数据库服务器,只需复制并粘贴它即可.

SHOW SERVER_ENCODING;
Run Code Online (Sandbox Code Playgroud)

结果:

  server_encoding 
-----------------  
UTF8
Run Code Online (Sandbox Code Playgroud)

对于客户端编码:

 SHOW CLIENT_ENCODING;
Run Code Online (Sandbox Code Playgroud)

方法2:

如果您已经登录,请使用此选项获取基于列表的结果

\l 
Run Code Online (Sandbox Code Playgroud)


Pet*_*aut 36

程序化解决方案:

SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'yourdb';
Run Code Online (Sandbox Code Playgroud)


Gre*_*sha 32

如果您想获得数据库编码:

psql  -U postgres -h somehost --list
Run Code Online (Sandbox Code Playgroud)

你会看到类似的东西:

List of databases
           Name         |  Owner   | Encoding
------------------------+----------+----------
db1                     | postgres | UTF8
Run Code Online (Sandbox Code Playgroud)


AMA*_*nc. 8

因为有多种方法可以为猫皮:

psql -l
Run Code Online (Sandbox Code Playgroud)

显示所有数据库名称,编码等。


Bas*_*que 5

tl; dr

SELECT character_set_name 
FROM information_schema.character_sets 
;
Run Code Online (Sandbox Code Playgroud)

标准方式: information_schema

从每个数据库/目录中存在的SQL标准架构 information_schema中,使用名为的已定义视图character_sets。这种方法应该可以在所有标准数据库系统中移植。

SELECT character_set_name 
FROM information_schema.character_sets 
;
Run Code Online (Sandbox Code Playgroud)

尽管名称是复数形式,但它仅显示一行,报告当前数据库/目录。

pgAdmin 4的屏幕截图,上面显示了查询结果

第三列是character_set_name

字符集的名称,当前实现为显示数据库编码的名称