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