From: Devrim GUNDUZ (devrim@gunduz.org)
Date: Sat 16 Aug 2003 - 11:36:35 EEST
Merhaba,
On Sat, 16 Aug 2003, Umut wrote:
> Dokumanlar arasinda biraz bogustum ve pgsql ile Turkce siralama
> konusunda bir seyler buldum. Peki basarabildim mi? Hayir.
>
> postgresql icin eski databaseler dahil Turkce karakterlerin dogru
> siralanmasini nasil saglayabilirim?
Emre Akbaş'ın yazdığı, henüz PostgreSQL belgeme ekleyemediğim bir yazı.
Kendisine teşekkür:
=======================================================================
PostgreSQL'de Türkçe sıralama yapabilmek için, initdb ile "database
cluster" oluştururken:
initdb --locale=tr_TR
yapmak yeterli. Çalışması için tek şart sistemde tr_TR localesinin düzgün bir şekilde kurulmuş
olması gerektiği. Bunu anlayabilmenin iki yolu var:
1) Şu dizinlere bakılabilir:
/usr/lib/locale (Linux, Solaris)
/usr/share/locale (Linux)
/usr/lib/nls/loc (DUX 4.0)
2) ya da:
locale -a
komutu ile sistemde kurulu bütün localeler listelenebilir.
- Teknik nedenlerden dolayı bazı locale ayarları "database cluster" yaratılırken belirlenir ve
"database cluster"ın ömrü boyunca değiştirilemez. (Yani initdb çalıştırıldıktan sonra bu ayarlar
değiştirilemez) Bunlar LC_COLLATE ve LC_CTYPE'dır. LC_COLLATE ve LC_CTYPE veritabanı içindeki
indekslerin neye göre (hangi alfabe, hangi dil, vs.) sıralanacağını belirler. initdb komutuna
locale=tr_TR parametresini verirken, LC_COLLATE ve LC_CTYPE'ın türkçe karakter setine ve dil
ayarlarına ayarlanması söylemiş oluyoruz.
Diğer locale ayarları (LC_MONETARY, LC_PAPER, LC_TIME gibi) veritabanı yaratıldıktan sonra
istenildiği zaman değişitirilebilir.
- PostgreSQL, birçok karakter setini destekliyor: LATIN5 (Türkçe), EUC_JP (Japonca), SQL_ASCII (default
Amerikan İngilizcesi), vs. Tam liste:
http://www.postgresql.org/docs/7.3/static/multibyte.html#AEN21737
"Database cluster"'ın karakter setini ayarlamak için:
initdb -E LATIN5
Bir veritabanı için:
createdb -E LATIN5
- Karakter seti ile ilgili olarak önemli olan nokta sunucunun karakter seti ile "client"ın karakter
setinin uyuşup uyuşmaması. Örneğin veritabanı sunucusu EUC_JP'ye ayarlı, "client" da LATIN1'e
ayarlıysa, sunucudan gelecek olan bazı japonca karakterler, "client" tarafında doğru görünmeyecektir.
PostgreSQL'in aralarında çevrim yapabildiği karakter seti listesi için:
http://www.postgresql.org/docs/7.3/static/multibyte.html#AEN21920
============================
Eski veritabanlari icin de bir dump/reload faydali olacaktir. Once initdb
tabii ki.
> Dogrusu postgresql.org sitesinin dokumantasyon mantigini
> cozemedim :-) Fazla kolaya alismisim.
:-) Interactive Documentation icinden arastirma yapabilirsiniz.
Umarim yardimci olmustur.
Saygilar.
-- Devrim GUNDUZ devrim@gunduz.org devrim.gunduz@linux.org.tr http://www.tdmsoft.com http://www.gunduz.org --- linux-baslangic listesinden cikmak ve tum listeci islemleri icin http://liste.linux.org.tr/ adresini kullanabilirisniz. Bu listeden cikmak icin <a href="mailto:linux-baslangic-request@liste.linux.org.tr?Subject=unsubscribe"> tiklayiniz</a>