esk tdn v PostgreSQL

 1) je nutne mit PostgreSQL kompilovan s --enable-locale, v pripade
    chuti pouzit unicode tak i --enable-multibyte (apod.)

    (poznamka k 7.2: --enable-nls, --enable-multibyte --enable-locale
     znamena podporu LS_MESSAGES (error hlasky v napr. cestine), 
     podpora unicode, podpora locales)

    - vice viz ./configure --help

 2) po nainstalovani je nutne udelat inicializaci adresare do ktereho
    se ukladaji databaze:

 Inicializaci je nutne provadet pod jinym nez root uzivatelem)
 
     # su - postgres
 
 PostgreSQL ignoruje u LC_COLLATE a LC_CTYPE nastaveni jine nez bylo
 provedene pri inicializaci. Tedy pozdejsi zmena v nejakem starovacim
 skriptu nema efekt! Duvodem je nutnost udrzet konzistentni indexy
 apod.
 
     $ export LANG='cs_CZ'

 Vlastni inicializace:

    $ initdb -D /adresar/nekde/

 3) start PostgreSQL serveru

 4) dalsi zakladni nastaveni 

    # su - postgres
    $ createuser muj_admin
    $ createdb nejaka_db

 5) pouzivani:

    - chcete-li pouzivat data v nejakem kodovani musite mit, DB 
      ktera to podporuje:

        CREATE DATABASE neco WITH ENCODING = 'LATIN2'

      Lze i pouzivat "obecne" kodovani napr. UNICODE, MULE_INTERNAL.
     
     - server musi vedet jake kodovani pouziva klient, to lze provest
      na strane klient napriklad pomoci "export PGCLIENTENCODING='LATIN2'", 
      nebo pomoci SQL prikazu SET CLIENT_ENCODING TO 'LATIN2';
      Toto nastaveni je platne pro daneho klienta. K jedne DB (napr. v
      UNICODE) muze pristupovat vice klientu s ruznym kodovanim.
      
     - server je schopen prekodovavat za chodu, napr. z UNICODE do
       LATIN2, WIN1250 apod.

    - informaci o nastaveni kodovani zjistite pomoci:

        SHOW SERVER_ENCODIND;
        SHOW CLIENT_ENCODING;
    

 Jednoduchy test: 

    * vytvorit soubor s obsahem:

SHOW CLIENT_ENCODING;
SHOW SERVER_ENCODING;
CREATE TABLE aaa (data varchar(16), dec varchar(3));
COPY aaa FROM stdin;
YYYY    87
    225
AAAA    65
    190
    221
aaaa    97
bbbb    98
tttt    116
    185
    253
\.
SELECT * FROM aaa ORDER BY data;
DROP TABLE aaa;

 a pak ho nasmerovat na klient:
 
    $ export PGCLIENTENCODING='LATIN2'
    $ pgsql moje_latin2_db < soubor

vysledek:

NOTICE:  Current client encoding is 'LATIN2'
SHOW VARIABLE
NOTICE:  Current server encoding is 'LATIN2'
SHOW VARIABLE
CREATE
 data | dec
------+-----
 AAAA | 65
 aaaa | 97
  | 225
 bbbb | 98
  | 185
 tttt | 116
 YYYY | 87
  | 221
  | 253
  | 190
(10 dek)

DROP

            Karel Zak

PS. uvedeny priklad je z PG 7.2.


Odkazy: