1 大小写敏感说明
大小写敏感是在数据库安装时进行设置的,是实例级参数,无法针对数据库单独进行设置。如果需要修改大小写敏感设置,通过initdb工具对数据库实例重新初始化(注意之前的data数据备份)
1.1 大小写敏感的特点
在安装数据库时,默认是大小写敏感的(enable_ci = off),其特性如下:
1) 没有使用界定标识符(双引号)引起来的表名、列名,会默认转为小写。
2) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储(引号里面的字符全部是大写或者小写默认转换成小写),以及后续的查询匹配。
1.2 大小写不敏感的特点
在安装时,如果选择了(enable_ci = on),则数据库会被初始化为大小写不敏感。大小写不敏感的表现:
1) 在创建表时,没有使用界定标识符(双引号)引起来的表名、列名,默认以当前输入的大小写进行存储,查询时也以全小写进行匹配。
2) 在查询时,没有使用界定标识符(双引号)引起来的表名、列名,默认都转为小写进行匹配。
3) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储,以及后续的查询匹配。
1.3 比较和总结
1) 不管大小写敏感与否,使用双引号引起来的表名、列名,都是按照引起来的大小写进行匹配。只有不使用界定标识符时有很大的差异。
2) 大小写敏感,适合于迁移Oracle数据库。大小写不敏感,适合于迁移MySQL和SQL Server数据库,PG模式只能设置大小写敏感;
1.4 大小写敏感的查看
show enable_ci ;
在数据库中,执行SQL语句即可查看:
2 设置大小写参数方法:
方法一、 重新安装数据库时设置,如果数据库中有数据,一定要做好数据库备份,可以参考下面第三章的备份操作。
在重新安装的时候,选择大小写敏感参数how enable_ci,off是敏感,on是不敏感
方法二、 重新初始化数据库data目录,设置大小写敏感
下面的方法以Linux操作为例,Windows上对应的工具在安装目录\Server\bin下面。
2.1 备份原始数据
使用sys_dump将整个原始库dump出来,做备份,如:
‐bash‐4.1$ sys_dump ‐U SYSTEM ‐W kingbase test > test_20221009.sql
如果有多个数据库,需要对每个数据库进行单独备份。
2.2 停止数据库
‐bash‐4.1$ sys_ctl ‐D /dbdata/kingbase/v8/data stop
waiting for server to shut down.... done
server stopped
2.3 备份数据库data目录
注意:由于需要重新初始化数据库,需要将原来的data目录清空,因此最好先把当前的data目录做一个备份。
‐bash‐4.1$ sudo cp ‐r /dbdata/kingbase/v8/data
/dbdata/kingbase/v8/data_back_20190819
2.4 清空原始目录
‐bash‐4.1$ rm ‐rf /dbdata/kingbase/v8/data/*
2.5 重新初始化数据库
重新初始化数据库为大小写不敏感
‐bash‐4.1$ initdb ‐U SYSTEM -W --enable_ci ‐D ../data
注意:这里的用户名和密码根据需要进行调整,最好是和之前保持一致
重新初始化数据库为大小写敏感
‐bash‐4.1$ initdb ‐U SYSTEM -W -D ../data
注意:这里的用户名和密码根据需要进行调整,最好是和之前保持一致
2.6 同步数据库配置文件
可以简单的将备份的data目录中的对应配置文件拷贝到新的data目录中:
sys_hba.conf
kingbase.conf
2.7 启动数据库
‐bash‐4.1$ sys_ctl ‐D /dbdata/kingbase/v8/data start
2.8 检查数据库是否已经启动
ksql ‐p 54321 ‐U SYSTEM ‐W Kingbase2019! ‐d test -c "select now();"
2.9 还原数据
‐bash‐4.1$ ksql ‐U SYSTEM ‐W ‐d test ‐f test_20221009.sql