这篇文章主要讲解了“GBase8s数据库有什么特点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“GBase8s数据库有什么特点”吧!
注意事项
将数据导入到GBase8s数据库中,我们会进行建库、建表、建字段的操作,当这些操作完成以后在初期导入一些测试或样例数据的时候都比较顺利。但有时到了正式环境,数据变多以后,里面藏着一些意向不到的特殊字符或生僻字会导致我们导入失败。所以以此文档记录在GBase8s建库过程中对生僻字处理的注意事项
关键的环境变量
n DB_LOCALE
含义:
通过 DB_LOCALE
环境变量设置的数据库语言环境指定数据库服务器用于正确解释特定数据库中语言环境相关的数据类型(NCHAR 和 NVARCHAR)所需的语言、地域和代码集。DB_LOCALE 中指定的代码集确定哪些字符在任何字符列中都是有效的,并且确定数据库对象(如数据库、表、列和视图)的名称。数据库服务器使用 DB_LOCALE 环境变量指定的数据库代码集将数据传入和传出数据库。
用途:
1. 在客户机应用程序和数据库服务器交换字符数据时,如果 DB_LOCALE
环境变量(在客户机计算机上)的值与 CLIENT_LOCALE 的值不同,客户机应用程序将执行代码集转换。 代码集转换防止这两种代码集不同时发生数据破坏。
2. 在客户机应用程序请求连接时,它将包括 DB_LOCALE(如果已设置)的信息发送至数据库服务器。
3. 在确定如何设置服务器处理语言环境的数据库信息时,数据库服务器使用 DB_LOCALE。
4. 在客户机应用程序尝试打开数据库时,数据库服务器将客户机应用程序传递的 DB_LOCALE
环境变量的值与数据库中存储的数据库语言环境进行比较。
5. 当数据库服务器存取与语言环境相关的数据类型的列时,数据库服务器使用 DB_LOCALE
指定的语言环境。
6. 当数据库服务器创建新数据库时,它将检查数据库语言环境(DB_LOCALE),以确定如何在数据库的系统目录中存储字符信息。此信息包括诸如如何处理正则表达式、比较字符串以及确保代码集的正确使用的操作。
所以如果我们的数据库需要支持中文字符,我们必须在建库的时候必须将该变量设置为zh_CN.utf8或zh_cn.GB18030-2000。否则如果按照en_us.8859-1进行建库后,在插入中午字符后将会变成乱码。以下是字符集名称及编码对照表
字符集名称 |
编码 |
8859-1 |
819 |
gb |
57357 |
GB2312-80 |
57357 |
utf8 |
57372 |
big5 |
57352 |
GB18030-2000 |
5488 |
字符集名称及编码对照表
n GL_USEGLU
含义:
如果想使NCHAR
和 NVARCHAR数据类型的字段内的数据支持unicode,则必须对GL_USEGLU环境变量进行使用设置
所以如果我们的数据库不仅需要支持中文,还需要支持生僻字符,则必须在建库前开启此变量
实际操作
我们需要把生僻字“”插入到数据库中,根据刚才的描述我们需要正确设置两个地方才能保证“”字成功入库
我们首先使用echo $DB_LOCALE;命令查看当前该变量的值
发现当前该变量的值不是zh_CN.utf8或zh_cn.GB18030-2000
所以我们在建立数据库之前,需要先将变量进行修改
其次我们需要使用onstat -g env命令确认GL_USEGLU是否进行了设置
当这两个变量都设置完毕后,我们使用dbaccess建立数据库testdb3
建表操作、新增生僻字记录,详情如下图所示,操作成功
使用如下语句确认当前数据库的编码,显示的是zh_CN.57372,
根据刚才的字符集名称及编码对照表,可知编码57372对应的字符集名称是utf8
SELECT * FROM sysmaster:sysdbslocale WHERE dbs_dbsname like 'testdb3%';
以下是我们测试当不设置GL_USEGLU变量的情况
我们通过unset GL_USEGLU命令变量使GL_USEGLU失效
使用onstat -g env命令对当前环境变量进行查看,发现已经没有了 GL_USEGLU环境变量
此时我们通过dbaccess建立了testdb4数据库
我们再插入刚才的生僻字“”将会如下图所示报错
34389 Illegal character 非法字符
再来测试插入正常汉字的情况
插入正常汉字是没有问题的
感谢各位的阅读,以上就是“GBase8s数据库有什么特点”的内容了,经过本文的学习后,相信大家对GBase8s数据库有什么特点这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/203732.html