GBase 8c兼容性之配置大小写敏感

原文链接:
https://www.gbase.cn/community/post/4018
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

MySQL和SQL Server支持大小写敏感。对于此类情况,GBase 8c兼容适配情况是怎样的呢?下面我们从对象名支持大小写敏感、数据查询支持大小写模糊查询这两方面来看下GBase 8c的表现情况。

1、列名支持大小写敏感

为兼容MySQL和SQL Server,首先创建GBase 8c B兼容模式的数据库(database)。

---在GBase 8c数据库管理系统中
--创建名为test的database
CREATE DATABASE test DBCOMPATIBILITY 'B' encoding 'UTF-8' LC_COLLATE 'zh_CN.utf8' LC_CTYPE 'zh_CN.utf8';
--创建名为t1的表
test=# create table t1(Name varchar(10),iD int);
CREATE TABLE
test=# \d+ t1
                                Table "public.t1"
Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
Name   | character varying(10) |           | extended |              |
iD     | integer               |           | plain    |              |
Has OIDs: no
Options: orientation=row, compression=no

test=# select column_name from information_schema.columns where table_name='t1';
column_name
-------------
iD
Name
(2 rows)

test=# select id from t1;
id
----
(0 rows)

-- 插入数据
test=# insert into t1(name,ID) values ('Test',1);
INSERT 0 1
test=# update t1 set name='new_test' where Id=1;
UPDATE 1

test=# select * from t1;
  Name   | iD
----------+----
new_test |  1
(1 row)


上面例子可以看出,在创建表时,可以指定列名的大小写,增删改查会忽略大小写,且在场景中满足MySQL与SQL Server的兼容。


2、表名支持大小写敏感


默认情况下,GBase 8c大小写不敏感。若需要实现大小写区分,有两种方法进行操作。

第一种:添加"".例如“T2”表现为T2,而非默认的t2:

test=# create table "T2" ( id int,Name varchar(10));
CREATE TABLE
test=# \d+
                                                 List of relations
Schema |             Name              | Type  | Owner |    Size    |             Storage              | Description
--------+-------------------------------+-------+-------+------------+----------------------------------+-------------
public | T2                            | table | gbase | 0 bytes    | {orientation=row,compression=no} |
public | index_statistic               | view  | gbase | 0 bytes    |                                  |
public | pg_type_nonstrict_basic_value | view  | gbase | 0 bytes    |                                  |
public | t1                            | table | gbase | 8192 bytes | {orientation=row,compression=no} |
(4 rows)
test=# \d+ t2
Did not find any relation named "t2".
test=# \d+ "T2"
                                Table "public.T2"
Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
id     | integer               |           | plain    |              |
Name   | character varying(10) |           | extended |              |
Has OIDs: no
Options: orientation=row, compression=no
```


这种增加" "虽然满足强制大小写,但是在调用和操作过程中仍需要添加双引号。

第二种:使用参数(`dolphin.lower_case_table_names`)进行调整。

---在GBase 8c数据库中
test=# alter database test set dolphin.lower_case_table_names to 0;
ALTER DATABASE
test=# \q      --alter database 当前session需要重新进入后生效

[gbase@gbase8c ~]$ gsql -r test -p 15400

test=# show dolphin.lower_case_table_names;
dolphin.lower_case_table_names
--------------------------------
0
(1 row)
test=# create table T3(id int,NAme varchar(10));
CREATE TABLE

test=# \d+ T3
                                Table "public.T3"
Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
id     | integer               |           | plain    |              |
NAme   | character varying(10) |           | extended |              |
Has OIDs: no
Options: orientation=row, compression=no

test=# select * from T3;
id | NAme
----+------
(0 rows)

test=# select * from t3;
ERROR:  relation "t3" does not exist on dn_6001_6002
LINE 1: select * from t3;
                     ^
```


以上即可满足表名的大小写敏感。

3、数据支持大小写模糊查询

MySQL、SQL Serverr支持对数据的大小写不敏感。

--在MySQL数据库中
mysql> create table t4(id int,name varchar(100)) COLLATE utf8_general_ci;
Query OK, 0 rows affected, 1 warning (0.61 sec)

mysql> insert into t4 values(1,'ABC'),(2,'ABc'),(3,'abc');
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t4 where name='abc';
+------+------+
| id   | name |
+------+------+
|    1 | ABC  |
|    2 | ABc  |
|    3 | abc  |
+------+------+
3 rows in set (0.01 sec)
mysql>


在MySQL中存在着很多的utf8编码格式,每种编码都有不同的区别,比如`utf8_general_ci`编码就是大小写不敏感,对查询不区分大小写。在GBase 8c最新版本已经兼容了`utf8_general_ci`编码。看下面例子:

test=# select * from pg_collation where collcollate='utf8_general_ci';
   collname     | collnamespace | collowner | collencoding |   collcollate   |    collctype    | collpadattr | collisdef
-----------------+---------------+-----------+--------------+-----------------+-----------------+-------------+-----------
utf8_general_ci |            11 |        10 |            7 | utf8_general_ci | utf8_general_ci | PAD SPACE   |
(1 row)

test=# create table t4(id int,name varchar(100)) COLLATE utf8_general_ci;
CREATE TABLE
test=# insert into t4 values(1,'ABC'),(2,'ABc'),(3,'abc');
INSERT 0 3
test=# select * from t4 where name='abc';
id | name
----+------
 1 | ABC
 2 | ABc
 3 | abc
(3 rows)
test=# select * from t4 where name='ABC';
id | name
----+------
 1 | ABC
 2 | ABc
 3 | abc
(3 rows)

需要注意:

  • 创建的数据库编码为UTF8;
  • `exclude_reserved_words`不设置。

原文链接:
https://www.gbase.cn/community/post/4018
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在 IntelliJ IDEA 中配置和连接 GBase 8c 数据库,你需要遵循以下几个步骤: 1. **安装GBase JDBC驱动**: 首先确保你已经在IDEA项目的外部依赖中添加了GBase JDBC驱动。如果没有,可以从GBase官方网站下载JDBC驱动文件(通常是.jar格式),然后将其添加到项目的`lib`目录或Maven/Gradle构建文件中的依赖项。 2. **设置数据源**: - 打开IntelliJ IDEA,点击`File` > `Project Structure` (或者在Mac上是`IntelliJ IDEA` > `Preferences`)。 - 在打开的窗口中,选择`Database`标签。 - 如果还没有数据源列表,点击右上角的"+"号,选择`New Data Source`。 - 在弹出的向导中,选择`JDBC`选项。 3. **配置连接参数**: - 输入数据库URL(例如:`jdbc:gbase:localhost:/path/to/your/gbase8c`),用户名(如果需要)和密码。 - 确保JDBC驱动的正确路径已被设置为`Driver`选项下。 4. **验证连接**: 在向导的下一步,尝试连接到数据库以验证配置是否正确。如果一切正常,你应该能看到连接成功,否则检查配置是否准确。 5. **使用连接**: 在代码中,你可以使用`java.sql.Connection`或Spring框架的`DataSource`来连接到GBase 8c。例如,在Java代码中,创建连接的片段可能看起来像这样: ```java Connection connection = DriverManager.getConnection("jdbc:gbase:localhost:/path/to/your/gbase8c", "username", "password"); ``` 6. **关闭连接**: 使用完毕后,记得关闭连接以释放资源: ```java connection.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值