2011-06-23 10 views
92

私はデータベースを持っており、データベースのデフォルトエンコーディングを知る必要があります。私はコマンドラインからそれを取得したい。 psql内からPostgresデータベースのエンコーディングを取得する

psql my_database -c 'SHOW SERVER_ENCODING' 

、SQLのIDEまたはAPI:コマンドラインから

答えて

112

SHOW SERVER_ENCODING 
+0

Questionで質問されているデータベース/カタログレベルの設定ではなく、サーバーレベルの設定(新しく作成されたデータベースで使用されるデフォルト)ですか? –

26

データベースのエンコーディングを取得したい場合:

psql -U postgres -h somehost --list 

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

プログラムで解決:

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

方法1:のようなもの

すでにこれだけをコピーして貼り付け、DBサーバにログインしている場合。

SHOW SERVER_ENCODING; 

結果:すでにログインしている場合は、使用し、このリストを取得するに基づいて、結果

再び:2

SHOW CLIENT_ENCODING; 

方法:クライアントのエンコーディングについては

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

\l 
2

TL; DR

SELECT character_set_name 
FROM information_schema.character_sets 
; 

標準的な方法:information_schema

すべてのデータベース/カタログにSQL-standard schemainformation_schema存在から、character_setsという名前の定義されたビューを使用します。このアプローチは、all standard database systemsに移植可能である必要があります。

SELECT * 
FROM information_schema.character_sets 
; 

名前が複数でも、現在のデータベース/カタログを報告する単一の行のみを表示します。

screenshot of pgAdmin 4 with results of query shown above

3列目はcharacter_set_nameです:文字セットの

名は、現在のデータベースのエンコーディングの名前を示すとして実装

0

つ以上の方法にありますのでスキンケア:

psql -l 

すべてのデータベース名、エンコーディングなどを表示します。

関連する問題