PostgresSQLの言語設定(locale)をja_JPにする
データ分析用PostgreSQLの言語設定したときの覚書。
環境: CentOS Stream 8, PostgreSQL 14.2
インストールは前の記事を参考に。
CentOSの言語設定を確認
# localectl status
System Locale: LANG=en_US.UTF-8VC Keymap: jp106X11 Layout: jp,usX11 Variant: ,
OSは英語のままデータベースは日本語にする。
言語設定は照合順序に関係する。詳しくは下記公式サイトで。
OSで提供している言語設定一覧を確認
# locale -a
ja_JPがない場合はこの記事の下を参照してインストール。
今のPostgreSQLの設定を確認
# su - postgres
データベースのリストを表示
$ psql -l
既存のデータベースのCollate, Ctypeは変更できない。作り直す必要がある。
PostgreSQLの設定変更
$ cd 14/data/
$ less postgresql.conf
lc_messages = 'ja_JP.UTF-8' # メッセージの言語lc_monetary = 'ja_JP.UTF-8' # 通貨書式lc_numeric = 'ja_JP.UTF-8' # 数字の書式lc_time = 'ja_JP.UTF-8' # 日付と時刻の書式
rootに戻ってPostgreSQL再起動して確認
# systemctl restart postgresql-14
# systemctl status postgresql-14
ログが日本語になっているのは気持ち悪いので英語に戻す
# less /var/lib/pgsql/14/data/postgresql.conf
lc_messages = 'en_US.UTF-8'
# systemctl restart postgresql-14
# systemctl status postgresql-14
データベース作成時のデフォルトをja_JPにする。
create databaseはtemplate1をコピーするのでtemplate1データベースを作り直す。
template1とtemplate0のデータベースはデフォルトのデータベースというだけで特別な役割はないらしい。なので削除して作り直してもシステムに影響はない。
postgresになる
# su - postgres
psqlからテンプレートフラグをfalseにしてデータベース削除
$ psql
# select * from pg_database;
# select datistemplate from pg_database where datname = 'template1';
# update pg_database set datistemplate = false where datname = 'template1';
# drop database template1;
# select * from pg_database;
データベース作成して確認
参考: PostgreSQL: Documentation: 14: CREATE DATABASE
# CREATE DATABASE template1 TEMPLATE=template0 LC_COLLATE="ja_JP.UTF-8" LC_CTYPE="ja_JP.UTF-8" IS_TEMPLATE=true;
# select * from pg_database;
# quit
DBeaverからデータベース作成してみて確認
$ psql -l
既存データベースをバックアップ
$ pg_dump recruit > ./backup.sql
データベースを削除、作成してリストア
$ psql -c 'drop database recruit;'
$ psql -c 'create database recruit;'
$ psql recruit < backup.sql
確認してバックアップ削除
$ psql -l
$ rm backup.sql
ja_JPをインストール
本番環境ではja_JPがなかったのでインストールした。
参考サイト
- 日本語ロケール(ja_JP.UTF-8)をインストールする - Qiita
- RHEL8小ネタ: 大量にある"glibc-langpack-*" パッケージの謎からコンテナイメージのサイズ削減の工夫をみる - 赤帽エンジニアブログ
yum経由でインストール実行
# dnf search glibc-langpack-ja
# dnf info glibc-langpack-ja
# dnf install glibc-langpack-ja
確認
# locale -a