安装部署 - 单机
Kingbase数据库大小写敏感说明及转换
0
狂神 | 2020-8-25 10:29 | 8202次浏览
Kingbase数据库大小写敏感转换
Author:人大金仓‐数据库工程师‐何敏
Date : 2020‐07‐22
1 大小写敏感说明
大小写敏感是在数据库安装时进行设置的,是实例级参数,无法针对数据库单独进行设置。如果需要修改大小写敏感设置,首选重装数据库;如果对数据库比较熟悉,可以通过initdb工具对数据库实例重新初始化,下面我们会详细介绍:
1.1 大小写敏感的特点
在安装数据库时,默认是大小写敏感的,其特性和Oracle基本一致:
1) 没有使用界定标识符(双引号)引起来的表名、列名,会默认转为大写。
2) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储,以及后续的查询匹配。
1.2 大小写不敏感的特点
在安装时,如果选择了case_insensitive,则数据库会被初始化为大小写不敏感。大小写不敏感的表现:
1) 在创建表时,没有使用界定标识符(双引号)引起来的表名、列名,默认以当前输入的大小写进行存储,查询时也以全小写进行匹配。
2) 在查询时,没有使用界定标识符(双引号)引起来的表名、列名,默认都转为小写进行匹配。
3) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储,以及后续的查询匹配。
1.3 比较和总结
1) 不管大小写敏感与否,使用双引号引起来的表名、列名,都是按照引起来的大小写进行匹配。只有不使用界定标识符时有很大的差异。
2) 大小写敏感,适合于迁移Oracle数据库。大小写不敏感,适合于迁移MySQL和SQL Server数据库。
1.4 大小写敏感的查看
在数据库中,执行SQL语句即可查看:
SHOW case_sensitive;
on:表示大小写敏感。 off:表示大小写不敏感。 |

2 方法一:重新安装数据库,选择大小写是否敏感
重新安装数据库时,如果数据库中有数据,一定要做好数据库备份,可以参考下面第三章的备份操作。
在重新安装的时候,选择大小写敏感,如下图所示:
勾选case_insensitive:表示大小写不敏感。
不勾选case_insensitive:表示大小写敏感。

3 方法二:重新初始化数据库data目录,设置大小写敏感
下面的方法以Linux操作为例,Windows上对应的工具在安装目录\Server\bin下面。
3.1 备份原始数据
使用sys_dump将整个原始库dump出来,做备份,如:
‐bash‐4.1$ sys_dump ‐U SYSTEM ‐W kingbase ‐Fp test > test_20190819.dump
如果有多个数据库,需要对每个数据库进行单独备份。
3.2 停止数据库
‐bash‐4.1$ sys_ctl ‐D /dbdata/kingbase/v8/data stop
waiting for server to shut down.... done
server stopped
3.3 备份数据库data目录
注意:由于需要重新初始化数据库,需要将原来的data目录清空,因此最好先把当前的data目录做一个备份。
‐bash‐4.1$ sudo cp ‐r /dbdata/kingbase/v8/data
/dbdata/kingbase/v8/data_back_20190819
3.4 清空原始目录
‐bash‐4.1$ rm ‐rf /dbdata/kingbase/v8/data/*
3.5 重新初始化数据库
3.5.1 重新初始化数据库为大小写不敏感
‐bash‐4.1$ initdb ‐E UTF‐8 ‐U SYSTEM ‐W Kingbase2019! ‐‐case‐insensitive ‐D
/dbdata/kingbase/v8/data
注意:这里的用户名和密码根据需要进行调整,最好是和之前保持一致
3.5.2 重新初始化数据库为大小写敏感
‐bash‐4.1$ initdb ‐E UTF‐8 ‐U SYSTEM ‐W Kingbase2019! ‐D /dbdata/kingbase/v8/data
注意:这里的用户名和密码根据需要进行调整,最好是和之前保持一致
3.6 同步数据库配置文件
可以简单的将备份的data目录中的对应配置文件拷贝到新的data目录中:
sys_hba.conf
kingbase.conf
3.7 启动数据库
‐bash‐4.1$ sys_ctl ‐D /dbdata/kingbase/v8/data start
3.8 为了方便,可以设置一些环境变量
‐bash‐4.1$ cat ~/.bash_profile
export KINGBASE_DATA=/dbdata/kingbase/v8/data/
export PATH=$PATH:/opt/Kingbase/ES/V8/Server/bin
export KINGBASE_PORT=54321
3.9 检查数据库是否已经启动
ksql ‐p 54321 ‐U SYSTEM ‐W Kingbase2019! ‐d test -c "select now();"
3.10 还原数据
‐bash‐4.1$ ksql ‐p 54321 ‐U SYSTEM ‐W Kingbase2019! ‐d test‐f test_20190819.dump
问题已关闭,未选择满意答案!
回答 ( 5 )
小小芳 | | 2020-9-29 10:28
能不能再安装的文档上说明一下
,更好一点,省的卸载重新安装卖女孩的小火柴 | | 2021-1-5 15:51
重新初始化一个data_new,当前运行都切换过来了,数据库工具无法连接了怎么办
- huangningning 追问
有什么报错呢?
Alex_UWLI | | 2021-5-13 15:25
initdb: 命令行参数太多 (第一个是 "UTF‐8")
这是什么情况?
kd0001 | | 2021-7-29 21:35
博主好:我需要使用大小写敏感的功能;按照上面的操作操作后,结果大小写还是不敏感的,哪操作不正确?有时间帮忙解答下。
[kingbase@localhost V8]$ kingbase -V
KINGBASE (KingbaseES) V008R006C003B0071
[kingbase@localhost V8]$ initdb -E UTF-8 -USYSTEM -W -D /home/kingbase/KingbaseES/V8/data
属于此数据库系统的文件宿主为用户 "kingbase".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
缺省的文本搜索配置将会被设置到"simple"
The comparision of strings is case-sensitive.
禁止为数据页生成校验和.
输入新的超级用户口令:
再输入一遍:
创建目录 /home/kingbase/KingbaseES/V8/data ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......posix
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
selecting default time zone ... Asia/Shanghai
创建配置文件 ... 成功
Begin setup encrypt device
initializing the encrypt device ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
create security database ... 成功
load security database ... 成功
create initial audit rules ... 成功
同步数据到磁盘...成功
initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 sys_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.
成功。您现在可以用下面的命令开启数据库服务器:
sys_ctl -D /home/kingbase/KingbaseES/V8/data -l 日志文件 start
[kingbase@localhost V8]$ mkdir -p /home/kingbase/KingbaseES/V8/data/sys_log
[kingbase@localhost V8]$ /etc/init.d/kingbase8d start
Starting KingbaseES V8:
waiting for server to start.... done
server started
KingbaseES V8 started successfully
[kingbase@localhost V8]$ ksql -p 54321 -U SYSTEM -W -d test -c "SHOW case_sensitive;"
口令:
case_sensitive
----------------
on
(1 行记录)




