Portál AbcLinuxu, 14. května 2025 05:38

Dotaz: Postgresql a razeni

15.9.2006 17:37 YuEN
Postgresql a razeni
Přečteno: 1307×
Odpovědět | Admin
Dobry den, mam postgres inicializovan s sk_SK.utf-8 locale, vsimnul jsem si, ze nektere znaky nejskou spravne serazeny, napr Ď = D, á = a, jak by je vubec nerozeznaval, nevite v cem by mohla byt chyba ?
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.9.2006 17:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Postgresql a razeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je správné řazení, ne? Alespoň v češtině se při prvním průchodu nerozlišuje mezi ď a d, á a a (ale např. c a č se rozlišuje), a rozlišují se teprve při druhém průchodu (tj. pokud by podle prvního byla slova shodná, ve druhém už se ď řadí až za d atd.) Pokud vím, při reimplementaci řazení v MySQL byla čeština jedním z pilotních jazyků, na kterém se řazení zkoušelo, protože když to dokáže setřídit správně podle českých pravidel, pak už to dokáže setřídit všechno :-)
9.7.2009 13:23 Milan Keršláger
Rozbalit Rozbalit vše Re: Postgresql a razeni

Chyba řazení se projevuje v RHEL 5, CentOS 5 a dalších distribucích s PostgreSQL 8.3. Ztačí udělat dump databáze (pg_dumpall -c), pak zeditovat /etc/init.d/postgresql tak, aby u příkazu initdb byl parametr "--locale=cs_CZ.iso-8859-2" (bez uvozovek). Smazat (zazálohovat) obsah adresáře /var/lib/pgsql/data, znovu spustit PosgreSQL (inicializuje se databáze). Pak zpět naimportovat data (su postgres; pgsql < zaloha). Třídění funguje dobře, dokonce i když jsou některé databáze v UTF-8 (názvy s azbukou mám na konci výstupu, což mi až tak moc nevadí).

15.9.2006 19:38 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Postgresql a razeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
Samozřejmě nestačí mít nějak nastavené locale... http://www.postgresql.org/docs/8.1/static/sql-createdatabase.html.

Postgres dovoluje nastavit kódování databáze při jejím vytváření a za běhu nelze změnit - je to kvůli indexům a jejich vazbě na operace třídění. Taky jsem se kdysi divil...
Math, as Barbie says, is hard.
15.9.2006 20:24 YuEN
Rozbalit Rozbalit vše Re: Postgresql a razeni
ano, databazy jsem vytvaral s --locale=sk_SK.utf-8, v systemu mam ale locale nastaveno na C
15.9.2006 20:33 YuEN
Rozbalit Rozbalit vše Re: Postgresql a razeni
tady je taky maly priklad:
Lukáš Dubovec
Mária Dúhová
Milan Ďurčo
Milan Durdiak
Pavol Dvorský
dle mych znalosti ze zakladny skoly to sprave neni :(
16.9.2006 11:14 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Postgresql a razeni
To má opravdu slovenština jiné abecední řazení, než čeština? Nechal jsem schválně seřadit tahle slova v OOo, a řadí je stejně česky i slovensky, a to do vámi uvedeného pořadí. Jste si jist, že vaše znalosti ze ZŠ jsou správné? :-)

Nemůžu najít slovenskou normu pro řazení (závada je na mém přijímači, packet loss v řádu desítek procent je docela dost), ale zkusil bych zapátrat tímto směrem, zda vaše představa o správném slovenském řazení odpovídá normované představě téhož :-)
16.9.2006 11:54 YuEN
Rozbalit Rozbalit vše Re: Postgresql a razeni
No ja bych si to razeni predstavoval nejak takhle:
a á ä b c č d ď dz dž e é f g h ch i í j k l ĺ ľ m n ň o ó ô p r ŕ s š t ť u ú v y ý z ž
Jestli je na to ale daka norma, tak to nevim ...
16.9.2006 12:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Postgresql a razeni
Nějaká slovenská norma je STN 01 0181, ta je zase někde označována za zastaralou, ale nenašel jsem, co jí nahradilo. Každopádně aktuální česká norma ČSN 97 6030 předepisuje následující řazení, přičemž v prvním průchodu jsou řazena písmena na jednom řádku stejně, teprve pokud dvě slova jsou podle tohoto řazení na stejné úrovni, řadí se podle pořadí písmen v řádku:
↓ PRIMÁRNÍ POŘADÍ
→ SEKUNDÁRNÍ POŘADÍ
a á â ă ä ą
b
c ć ç
č
d ď đ
e é ě ë ę
f
g
h
ch
i í î
j
k
l ĺ ľ ł
m
n ń ň
o ó ô ö ő
p
q
r ŕ
ř
s ś ş
š
t ť ţ
u ú ů ü ű
v
w
x
y ý
z ż ź
ž
15.9.2006 20:33 YuEN
Rozbalit Rozbalit vše Re: Postgresql a razeni
tady je taky maly priklad:
Lukáš Dubovec
Mária Dúhová
Milan Ďurčo
Milan Durdiak
Pavol Dvorský
dle mych znalosti ze zakladny skoly to sprave neni :(
15.9.2006 20:48 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Postgresql a razeni
A co vam (v psql) vypise tohle?
show lc_collate;
15.9.2006 21:51 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Postgresql a razeni
Vypíše mi to C, ale funguje správně;-).
Math, as Barbie says, is hard.
16.9.2006 00:31 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Postgresql a razeni
Funguje spravne = radi dle C?
16.9.2006 01:46 YuEN
Rozbalit Rozbalit vše Re: Postgresql a razeni
 lc_collate
-------------
 sk_SK.utf-8
(1 row)
15.9.2006 21:52 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Postgresql a razeni
Nebylo to nahodou --encoding (-E) ?
Math, as Barbie says, is hard.
15.9.2006 21:59 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Postgresql a razeni
Blbost, omlouvám se...
Math, as Barbie says, is hard.
AraxoN avatar 15.9.2006 20:53 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Postgresql a razeni
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tiež som mal problémy rozchodiť zoradzovanie a vyhľadávanie s diakritikou v postgrese 8.0 a vyššom. Nakoniec sa to ku spokojnosti rozbehlo, keď som použil locale sk_SK.iso-8859-2. Môj hrubý odhad je, že problém je v glibc.

Skúšal som ešte utf-8, a windows-1250, ale nebolo to zoradené správne. Zvlášť ten utf-8 ma mrzí - ten by som tam videl najradšej.

Takže databázu mám v iso-8859-2 a klienti si to prekódujú podľa potreby vo svojom spojení cez PGCLIENTENCODING.

15.9.2006 23:26 h7
Rozbalit Rozbalit vše Re: Postgresql a razeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
ahoj ,mel jsem podobny problem. System jsem mel nastaveny lokale cs_CZ.UTF8 (FC5) ,databazi jsem zkompiloval s --use-locales (asi to neni presne ) a data jsem naimportoval z jine db v latin2 .... Databaze spatne radila. Pomohlo mi znova prelozit postgres s locales cs_CZ. cus h7

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.