Kingbase資料庫大小寫敏感說明及轉換

2022-06-04 10:03:12 字數 2397 閱讀 8114

kingbase資料庫大小寫敏感轉換

author:人大金倉‐資料庫工程師‐何敏

date : 2020‐07‐22

大小寫敏感是在資料庫安裝時進行設定的,是例項級引數,無法針對資料庫單獨進行設定。如果需要修改大小寫敏感設定,首選重灌資料庫;如果對資料庫比較熟悉,可以通過initdb工具對資料庫例項重新初始化,下面我們會詳細介紹:

在安裝資料庫時,預設是大小寫敏感的,其特性和oracle基本一致:

1) 沒有使用界定識別符號(雙引號)引起來的表名、列名,會預設轉為大寫。

2) 使用界定識別符號引起來的表名、列名,將以引起來的大小寫進行儲存,以及後續的查詢匹配。

在安裝時,如果選擇了case_insensitive,則資料庫會被初始化為大小寫不敏感。大小寫不敏感的表現:

1) 在建立表時,沒有使用界定識別符號(雙引號)引起來的表名、列名,預設以當前輸入的大小寫進行儲存,查詢時也以全小寫進行匹配。

2) 在查詢時,沒有使用界定識別符號(雙引號)引起來的表名、列名,預設都轉為小寫進行匹配。

3) 使用界定識別符號引起來的表名、列名,將以引起來的大小寫進行儲存,以及後續的查詢匹配。

1) 不管大小寫敏感與否,使用雙引號引起來的表名、列名,都是按照引起來的大小寫進行匹配。只有不使用界定識別符號時有很大的差異。

2) 大小寫敏感,適合於遷移oracle資料庫。大小寫不敏感,適合於遷移mysql和sql server資料庫。

在資料庫中,執行sql語句即可檢視:

show case_sensitive;

on:表示大小寫敏感。

off:表示大小寫不敏感。

重新安裝資料庫時,如果資料庫中有資料,一定要做好資料庫備份,可以參考下面第三章的備份操作。

在重新安裝的時候,選擇大小寫敏感,如下圖所示:

勾選case_insensitive:表示大小寫不敏感。

不勾選case_insensitive:表示大小寫敏感。

下面的方法以linux操作為例,windows上對應的工具在安裝目錄\server\bin下面。

使用sys_dump將整個原始庫dump出來,做備份,如:

‐bash‐4.1$ sys_dump ‐u system ‐w kingbase ‐fp test > test_20190819.dump

如果有多個資料庫,需要對每個資料庫進行單獨備份。

‐bash‐4.1$ sys_ctl ‐d /dbdata/kingbase/v8/data stop

waiting for server to shut down.... done

server stopped

注意:由於需要重新初始化資料庫,需要將原來的data目錄清空,因此最好先把當前的data目錄做乙個備份。

‐bash‐4.1$ sudo cp ‐r /dbdata/kingbase/v8/data

/dbdata/kingbase/v8/data_back_20190819

‐bash‐4.1$ rm ‐rf /dbdata/kingbase/v8/data/*

‐bash‐4.1$ initdb ‐e utf‐8 ‐u system ‐w kingbase2019! ‐‐case‐insensitive ‐d

/dbdata/kingbase/v8/data

注意:這裡的使用者名稱和密碼根據需要進行調整,最好是和之前保持一致

‐bash‐4.1$ initdb ‐e utf‐8 ‐u system ‐w kingbase2019! ‐d /dbdata/kingbase/v8/data

注意:這裡的使用者名稱和密碼根據需要進行調整,最好是和之前保持一致

可以簡單的將備份的data目錄中的對應配置檔案拷貝到新的data目錄中:

sys_hba.conf

kingbase.conf

‐bash‐4.1$ sys_ctl ‐d /dbdata/kingbase/v8/data start

‐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

ksql ‐p 54321 ‐u system ‐w kingbase2019! ‐d test -c "select now();"

‐bash‐4.1$ ksql ‐p 54321 ‐u system ‐w kingbase2019! ‐d test‐f test_20190819.dump

** 

資料庫大小寫與程式語言大小寫的區別

今天在看優惠券功能 塊的時候,發現可選優惠券很多,但是選擇了乙個,卻始終改不了優惠券狀態。檢查 追蹤後發現是資料庫不區分大小寫。select from table where username lizhaoyao 與 select from table where username lizhaoya...

資料庫大小寫敏感設定

設定資料庫大小寫敏感 create database dbsen in datadbs1 with log nlscase sensitive 字元型別的char lvarchar varchar nchar nvarchar 均視為區分大小寫的。設定資料庫大小寫不敏感 create databas...

Mysql資料庫大小寫問題

select from user where name aaa select from user where name aaa 以上兩條sql執行結果是一樣的。以上兩條sql語句的執行結果是一樣的,發現mysql有時是不區分大小寫的。如何區分大小寫以下是三種方式,本人親測 1 建庫的時候排序規則選擇...