GBase 8a MPP Cluster 数据库系统目前只支持 UTF8 和 GBK 两种常用的字符集。
1.字符集设置
针对字符集不统一的场景(GBase 8a MPP Cluster 数据库系统的字符集为
UTF8,而客户端连接工具字符集为 GBK),提供字符集设置语句,确保查询显
示不出现乱码,数据存储的字符集正确。
语法 :
1) 需修改配置文件,(gnode/gcluster 的所有节点都要配置)
[client]
default-character-set=gbk
[gbased]
default-character-set=gbk
collation_server=gbk_bin
查看系统是否配置成 gbk 模式
show variables like ‘%chara%’;
gbase> show variables like '%chara%';
+------------------------------------------------+--------------------------------------------+
| Variable_name | Value |
+------------------------------------------------+--------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_sort | binary |
| character_set_system | utf8 |
| character_sets_dir | /opt/gcluster/server/share/gbase/charsets/ |
+------------------------------------------------+--------------------------------------------+
9 rows in set (Elapsed: 00:00:00.03)
2) 安装好数据库后需要改变系统表的格式;
alter database gclusterdb DEFAULT CHARACTER SET gbk COLLATE
gbk_bin;
alter database gctmpdb DEFAULT CHARACTER SET gbk COLLATE
gbk_bin;
2.按指定字符集排序
按指定字符集排序,添加系统参数 character_set_sort 来指定排序时使用
的字符集。参数值包括 binary、UTF8、GBK,缺省值为 binary。当参数值为 binary
时,表示按照排序列字符集的二进制进行排序,缺省不改变排序列的字符集,
同添加参数前的版本保持一致;当参数值为 UTF8、GBK 时先转化为目标字符集
的字符,再按照二进制方式进行排序。如下表所示:
参数值 排序方式
binary 缺省行为,按照排序列的字符集的二进制排序
UTF8 进行字符集列转换,按照 UTF8 字符集的二进制排序
GBK 进行字符集列转换,按照 GBK 字符集的二进制排序
该参数可通过配置文件和 set 方式进行设置。如在配置文件中添加
character_set_sort=utf8,或在 Gnode 客户端执行 set character_set_sort=
utf8。
按指定字符集排序功能主要有以下两点:
1) 指定的字符集为当前 GBase 8a 所支持的所有字符集之一。
目前 GBase 8a 所支持的字符集为 UTF8 和 GBK 两种。因此支持 UTF8 字符集
转 GBK 字符集和 GBK 字符集转 UTF8 字符集。
2) 只对字符型的列类型进行转换, 包括 char、varchar、text。
注意:
当前 GBase 8a 目前支持 UTF8 和 GBK 两种字符集,用户使用前需要选择其
中一种。安装后不能更改。