zoukankan      html  css  js  c++  java
  • PostgreSQL中的collations

    与Oracle相比,PostgreSQL对collation的支持依赖于操作系统。

     

    以下是基于Centos7.5的测试结果

    $ env | grep LC
    $ env | grep LANG
    LANG=en_US.UTF-8
    

      

    使用initdb初始化集群的时候,就会使用这些操作系统的配置。

    postgres=# l
                                      List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
     template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
    (4 rows)
    
    postgres=# 
    

      

    在新建数据库的时候,可以指定数据库的默认的callation:

    postgres=# create database abce with LC_COLLATE = "en_US.UTF-8";
    CREATE DATABASE
    postgres=# create database abce2 with LC_COLLATE = "de_DE.UTF-8";
    ERROR:  new collation (de_DE.UTF-8) is incompatible with the collation of the template database (en_US.UTF-8)
    HINT:  Use the same collation as in the template database, or use template0 as template.
    postgres=# 
    

    但是,指定的collation必须是与template库兼容的。或者,使用template0作为模板。

     

    如果想看看操作系统支持哪些collations,可以执行:

    $ localectl list-locales
    

      

    也可以登录postgres后查看:

    postgres=# select * from pg_collation ;
    

      

  • 相关阅读:
    24.Azkaban调度脚本的编写
    Docker 安装 Apache
    Docker 安装 MongoDB
    Docker 安装 Redis
    Docker 安装 Python
    Docker 安装 Tomcat
    Docker 安装 MySQL
    Docker 安装 PHP
    Docker 安装 Nginx
    Docker 镜像使用
  • 原文地址:https://www.cnblogs.com/abclife/p/13924350.html
Copyright © 2011-2022 走看看