PostgreSQL 创建库时如何指定 Collate, Ctype

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云数据库 RDS SQL Server,基础系列 2核4GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 初始化集群,建库,建表,建索引,sort | compare QUERY时都可以指定COLLATE。用法参考https://www.postgresql.org/docs/9.5/static/sql-createtable.htmlhttps://www.postgresql.org/docs/.

初始化集群,建库,建表,建索引,sort | compare QUERY时都可以指定COLLATE。
用法参考
https://www.postgresql.org/docs/9.5/static/sql-createtable.html
https://www.postgresql.org/docs/9.5/static/collation.html

CREATE DATABASE name
    [ [ WITH ] [ OWNER [=] user_name ]
           [ TEMPLATE [=] template ]
           [ ENCODING [=] encoding ]
           [ LC_COLLATE [=] lc_collate ]
           [ LC_CTYPE [=] lc_ctype ]
           [ TABLESPACE [=] tablespace_name ]
           [ ALLOW_CONNECTIONS [=] allowconn ]
           [ CONNECTION LIMIT [=] connlimit ] ]
           [ IS_TEMPLATE [=] istemplate ]
CREATE TABLE test1 (
    a text COLLATE "de_DE",
    b text COLLATE "es_ES",
    ...
);
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING method ]
    ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
    [ WITH ( storage_parameter = value [, ... ] ) ]
    [ TABLESPACE tablespace_name ]
    [ WHERE predicate ]

Character-string data is sorted according to the collation that applies to the column being sorted.
That can be overridden at need by including a COLLATE clause in the expression, for example
ORDER BY mycolumn COLLATE "en_US".

如果你要在一个集群中创建不同的或者与模板库不兼容的LC怎么做呢?
通过template0创建即可,建议你这样做:
新建所有需求的lc库,以它们为模板再创建其他的库。

创建模板库,指定collate
ps PostgreSQL 9.5以下的版本不支持is_template选项,不加即可。

postgres=# create database tmpdb_zh_cn with template template0 lc_collate 'zh_CN.UTF8' lc_ctype 'zh_CN.UTF8' is_template=true;

在模板库中创建一些你需要预定义的东西,包括数据等等。

tmpdb_zh_cn=# create extension hstore;
CREATE EXTENSION

基于模板库创建数据库。

postgres=# create database db1_zh_cn with template tmpdb_zh_cn;
CREATE DATABASE

 tmp         | postgres | UTF8     | zh_CN.utf8 | zh_CN.utf8 |                       | 7360 kB | pg_default | 
 tmpdb_zh_cn | postgres | UTF8     | zh_CN.UTF8 | zh_CN.UTF8 |                       | 7360 kB | pg_default | 
(8 rows)

如果你要删除模板库,需要先把模板库改成普通库再删除。

postgres=# alter database tmpdb_zh_cn is_template false;
ALTER DATABASE
postgres=# drop database tmpdb_zh_cn ;
DROP DATABASE

查询PG支持的collate

postgres=# select * from pg_collation ;
       collname        | collnamespace | collowner | collencoding |      collcollate      |       collctype       
-----------------------+---------------+-----------+--------------+-----------------------+-----------------------
 default               |            11 |        10 |           -1 |                       | 
 C                     |            11 |        10 |           -1 | C                     | C
 POSIX                 |            11 |        10 |           -1 | POSIX                 | POSIX
 aa_DJ                 |            11 |        10 |            6 | aa_DJ.utf8            | aa_DJ.utf8
 aa_DJ                 |            11 |        10 |            8 | aa_DJ                 | aa_DJ
 aa_DJ.iso88591        |            11 |        10 |            8 | aa_DJ.iso88591        | aa_DJ.iso88591
......

查询列对应的collate
pg_catalog.pg_attribute.attcollation
对应 pg_collation.oid

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
监控 数据可视化 关系型数据库
PostgreSQL主备库搭建
pg主备库的搭建,首先需在2个节点安装pg软件,然后依次在2个节点配置主备。 本文采用os为CentOS7.6,pg版本使用14.2,以下为详细部署步骤。
904 0
|
SQL 关系型数据库 数据库
PostgreSQL 删除数据库
PostgreSQL 删除数据库
390 0
|
弹性计算 网络协议 容灾
PostgreSQL 时间点恢复(PITR)在异步流复制主从模式下,如何避免主备切换后PITR恢复(备库、容灾节点、只读节点)走错时间线(timeline , history , partial , restore_command , recovery.conf)
标签 PostgreSQL , 恢复 , 时间点恢复 , PITR , restore_command , recovery.conf , partial , history , 任意时间点恢复 , timeline , 时间线 背景 政治正确非常重要,对于数据库来说亦如此,一个基于流复制的HA架构的集群,如果还有一堆只读节点,当HA集群发生了主备切换后,这些只读节点能否与新的主节点保持
1867 0
|
10月前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL【应用 01】使用Vector插件实现向量相似度查询(Docker部署的PostgreSQL安装pgvector插件说明)和Milvus向量库对比
PostgreSQL【应用 01】使用Vector插件实现向量相似度查询(Docker部署的PostgreSQL安装pgvector插件说明)和Milvus向量库对比
873 1
|
SQL 关系型数据库 数据库连接
PG技术大讲堂 - Part 3:PostgreSQL建库与使用
PG技术大讲堂 - Part 3:PostgreSQL建库与使用
254 1
|
监控 关系型数据库 PostgreSQL
PostgreSQL 12: 新增 pg_stat_progress_create_index 视图监控索引创建进度
PostgreSQL 12 版本之前,对PostgreSQL大表创建索引时是一个比较痛苦的过程,创建索引过程中无法得知索引创建进度,PostgreSQL 12 在运维监控功能方面得到增强,新增 pg_stat_progress_create_index 视图可以监控索引的创建进度,本文简单演示。
2327 0
|
关系型数据库 分布式数据库 数据库
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
181 0
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 创建数据表
PostgreSQL 创建数据表
555 0
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 删除数据库
PostgreSQL 删除数据库
206 0
|
关系型数据库 PostgreSQL
『PostgreSQL』PGSQL手动创建Sequence序列
📣读完这篇文章里你能收获到 - 在PostgreSQL中对Sequence的管理及使用
744 0

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版