ロケールの設定を行うと、文字列処理、日付や通貨の書式、メッセージの言語などを 変更できる。
ロケールをサポートしない C ロケール(--locale=C と --no-locale は同じ)以外に 設定すると不具合が生じる場合がある。
文字列の並び換え順(lc_collate)と文字の分類(lc_ctype)は、データベース・ クラスタ初期化(initdb)時とデータベース作成時のみ設定出来る。後からの変更 は出来ない。
C ロケール(--locale=C または --no-locale)以外にする場合、エンコーディング とロケールは一致しなければならない。
・データベース・クラスタ初期化(initdb)時設定項目は、全てのロケール
[postgres]$ initdb --encoding=UTF-8 --no-locale --data-checksums [postgres]$ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8 --data-checksums 確認 DB=> select name, setting, context from pg_settings where name like 'lc%';
name (ロケール名) | setting (設定) | context (設定変更) |
---|---|---|
lc_collate | C | internal(変更出来ない)文字列の並び換え順 |
lc_ctype | C | internal(変更出来ない)文字の分類 |
lc_messages | C | superuser(管理者)メッセージの言語 |
lc_monetary | C | user(一般ユーザー)通貨書式 |
lc_numeric | C | user(一般ユーザー)数値書式 |
lc_time | C | user(一般ユーザー)日付/時刻の書式 |
設定項目は、全てのロケール
[user]$ createdb -U ユーザー名 データベース名 --encoding=UTF-8 --locale=ja_JP.UTF-8 --template=template0 確認 DB=> \l
データベース一覧 | ||||
---|---|---|---|---|
名前 | 所有者 | エンコーディング | 照合順序 | Ctype (変換演算子) |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C |
dbname | username | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
設定項目は、lc_messages, lc_monetary, lc_numeric, lc_time
[root]# vim /usr/local/pgsql/data/postgresql.conf lc_messages = 'C' # メッセージの言語 lc_monetary = 'C' # 通貨書式 lc_numeric = 'C' # 数値書式 #lc_time = 'C' # 日付/時刻の書式 lc_time = 'ja_JP.UTF-8' [root]# systemctl reload-or-restart postgresql.service 確認 DB=> select name, setting, context from pg_settings where name like 'lc%';
name | setting | context |
---|---|---|
lc_collate | C | internal |
lc_ctype | C | internal |
lc_messages | C | superuser |
lc_monetary | C | user |
lc_numeric | C | user |
lc_time | ja_JP.UTF-8 | user |
DB=> set LC_TIME = 'ja_JP.UTF-8'; # 日付/時刻の書式 確認 DB=> show lc_time; lc_time ------------------ ja_JP.UTF-8 DB=> select to_char( current_timestamp, 'MM/DD(TMDy)' ) as today; today ---------------- 08/06(土) Perl my $sql = "set LC_TIME = 'ja_JP.UTF-8';"; # 日付/時刻の書式 $sql .= " select to_char( 列名, 'MM/DD(TMDy)' ) as 別名 from テーブル";