Postgres veritabanının kodlamasını alma


141

Bir veritabanım var ve veritabanı için varsayılan kodlamayı bilmem gerekiyor. Komut satırından almak istiyorum.

Yanıtlar:


175

Komut satırından:

psql my_database -c 'SHOW SERVER_ENCODING'

İçeriden psqlbir SQL IDE veya bir API:

SHOW SERVER_ENCODING

Soruda istenen veritabanı / katalog düzeyi ayarı yerine sunucu düzeyi ayarı (yeni oluşturulan veritabanları için kullanılan varsayılan) değil mi?
Basil Bourque

4
Psql içinden, sonunda noktalı virgül olması gerektiğini unutmayın. ie SHOW SERVER_ENCODING;
Jon Bernhardt

49

Yöntem 1:

Zaten db sunucusunda oturum açtıysanız, bunu kopyalayıp yapıştırmanız yeterlidir.

SHOW SERVER_ENCODING;

Sonuç:

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

İstemci kodlaması için:

 SHOW CLIENT_ENCODING;

Yöntem 2:

Yine giriş yaptıysanız, listeye dayalı sonuç almak için bunu kullanın

\l 

41

Programlı bir çözüm:

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

32

Veritabanı kodlamaları almak istiyorsanız:

psql  -U postgres -h somehost --list

Şuna benzer bir şey göreceksiniz:

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

12

Çünkü bir kedinin derisini atmanın birden fazla yolu vardır:

psql -l

Tüm veritabanı adlarını, kodlamayı ve daha fazlasını gösterir.


5

tl; Dr.

SELECT character_set_name 
FROM information_schema.character_sets 
;

Standart yolu: information_schema

Her veritabanında / katalogda bulunan SQL standardı şemasında information_schema , adlı tanımlı görünümü kullanın character_sets. Bu yaklaşım tüm standart veritabanı sistemlerinde taşınabilir olmalıdır .

SELECT * 
FROM information_schema.character_sets 
;

Adın çoğul olmasına rağmen, geçerli veritabanında / katalogda raporlama yapan tek bir satır gösterir.

pgAdmin 4'ün ekran görüntüsü, yukarıda gösterilen sorgu sonuçları ile

Üçüncü sütun character_set_name:

Veritabanı kodlamasının adını göstermek üzere uygulanmakta olan karakter kümesinin adı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.