Kingbase數據庫大小寫敏感說明及轉換


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

 

轉載 https://bbs.kingbase.com.cn/wenda/question/137.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM