postgresql?IvorySQL新增命令及相關配置參數(shù)詳解
引言
在之前的一篇文章中,我們簡要介紹了「IvorySQL的IVY_GUC框架介紹與使用指南」,除了數(shù)據(jù)類型和內(nèi)置函數(shù)的兼容性外,IvorySQL還新增了一些GUC參數(shù),以便更好地對數(shù)據(jù)庫變量進行設置和對數(shù)據(jù)庫進行控制。
接下來,本文將詳細介紹IvorySQL支持多種SQL語句,并且可以與多種數(shù)據(jù)庫進行交互。在IvorySQL中,新增命令和配置參數(shù)可以幫助優(yōu)化查詢性能和查詢靈活性。
01 初始化指定模式命令
為了滿足PG模式和兼容Oracle模式,IvorySQL特別設計了PG和Oracle兩種模式,并且可以在initdb時指定所需模式。
相關文檔鏈接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/17
具體命令如下:
1.1 初始化PG模式
(1)./initdb -D ../data -m pg
(2)要檢查是否已成功指定模式,請啟動數(shù)據(jù)庫。運行命令:./pg_ctl -D ../data start。如果顯示以下信息,則表示已成功指定PG模式:
2023-12-01 15:02:22.327 CST [41358] LOG: listening on IPv4 address "127.0.0.1", port 5432 2023-12-01 15:02:22.338 CST [41358] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"2023-12-01 15:02:22.362 CST [41361] LOG: database system was shut down at 2023-12-01 15:01:47 CST 2023-12-01 15:02:22.394 CST [41358] LOG: database system is ready to accept connections done server started
1.2 初始化oracle兼容模式
(1)執(zhí)行初始化數(shù)據(jù)庫命令:./initdb -D ../data -m oracle
(2)驗證初始化是否成功,并通過./pg_ctl -D ../data start啟動數(shù)據(jù)庫。啟動后會顯示以下內(nèi)容
2023-12-01 15:14:10.357 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 5432 2023-12-01 15:14:10.362 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 1521 2023-12-01 15:14:10.368 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2023-12-01 15:14:10.379 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.1521" 2023-12-01 15:14:10.410 CST [42283] LOG: database system was shut down at 2023-12-01 15:14:02 CST 2023-12-01 15:14:10.446 CST [42280] LOG: database system is ready to accept connections done server started
1.3 如果不添加-m參數(shù),則默認為oralce兼容模式
(1)執(zhí)行初始化數(shù)據(jù)庫命令:/initdb -D ../data
(2)通過./pg_ctl -D ../data start啟動數(shù)據(jù)庫。啟動后會顯示以下內(nèi)容
2023-12-01 15:14:10.357 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 5432 2023-12-01 15:14:10.362 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 1521 2023-12-01 15:14:10.368 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2023-12-01 15:14:10.379 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.1521" 2023-12-01 15:14:10.410 CST [42283] LOG: database system was shut down at 2023-12-01 15:14:02 CST 2023-12-01 15:14:10.446 CST [42280] LOG: database system is ready to accept connections done server started
02 -C參數(shù)命令設置大小寫轉換
為了確保PG和Oracle在引用標識符大小寫兼容方面的良好體驗,IvorySQL提供了三種引用標識符的大小寫轉換模式以適應不同的場景。
在初始化數(shù)據(jù)庫時,可以通過initdb命令的-C選項來設置大小寫轉換模式。該選項可以接受的值包括“normal”、“interchange”和“lowercase”。
相關文檔鏈接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/16
以下是具體命令的示例:
(1)設置正常大小寫轉換模式:./initdb -D ../data -C normal 標識符轉換模式與原生PG相同。
(2)設置交互大小寫轉換模式:./initdb -D ../data -C interchange
(3)設置全部轉換為小寫模式:./initdb -D ../data -C lowercase
如果雙引號所引用的標識符中的字母全部為大寫,則將大寫轉換為小寫。
測試如下
SET ivorysql.enable_case_switch = true; SET ivorysql.identifier_case_switch = interchange; CREATE TABLE "ABD"(c1 int, c2 int); SELECT * FROM "ABD"; c1 | c2 ----+---- (0 rows) SELECT * FROM "Abd"; -- ERROR SELECT * FROM "abd"; -- ERROR DROP TABLE abd;
如果雙引號所引用的標識符中的字母全部為小寫,則將小寫轉換為大寫。
測試如下
SET ivorysql.enable_case_switch = true; SET ivorysql.identifier_case_switch = interchange; CREATE TABLE "abd"(c1 int, c2 int); SELECT * FROM "ABD";-- ERROR SELECT * FROM "Abd"; -- ERROR SELECT * FROM "abd"; c1 | c2 ----+---- (0 rows) DROP TABLE abd;
如果用雙引號引起來的標識符中字母是大小寫混合的,則保持標識符不變。
測試如下
SET ivorysql.enable_case_switch = true; SET ivorysql.identifier_case_switch = interchange; CREATE TABLE "Abd"(c1 int, c2 int); SELECT * FROM "ABD"; -- ERROR SELECT * FROM ABD; -- ERROR SELECT * FROM abd; -- ERROR SELECT * FROM Abd; -- ERROR SELECT * FROM "Abd"; c1 | c2 ----+---- (0 rows) DROP TABLE "Abd";
/initdb -D ../data -C lowercase 將所有標識符轉換為小寫字母。
測試如下
SET ivorysql.enable_case_switch = true; SET identifier_case_switch = lowercase; CREATE TABLE "Abd"(c1 int, c2 int); SELECT * FROM "Abd"; c1 | c2 ----+---- (0 rows) SELECT * FROM ABD; -- ERROR SELECT * FROM abd; -- ERROR SELECT * FROM Abd; -- ERROR DROP TABLE "Abd";
03 \parser命令
在成功連接數(shù)據(jù)庫后,您可以輸入SQL語句\parser來查看當前數(shù)據(jù)庫parser信息。具體實例如下:
1、輸入\parser后,如果顯示Oracle parser,則表明當前處于Oracle parser。
如果想要切換為PG,則輸入命令:set ivorysql.comatible_mode=PG,此時客戶端仍然處于Oralce parser,需要再次輸入命令\parser,此時才能更新parser為PG parser;
2、輸入\parser后,如果顯示PG parser,則表明當前處于PG parser。
如果想要切換為Oracle,則輸入命令:set ivorysql.comatible_mode=Oracle,此時客戶端仍然處于PG parser,需要再次輸入命令\parser,此時才能更新parser為PG parser;
04 --with-oraport命令
在執(zhí)行configure時可以加上--with-oraport=number命令,將number設置為服務器和客戶端的默認端口。這個端口可以在后續(xù)進行修改,但如果在此處聲明,則服務器和客戶端將具有相同的編譯好的默認值,這樣會更加方便。
相關文檔鏈接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/22
具體示例如下:
./configure CFLAGS="-O0 -g" \ --prefix=$PWD/inst \ --with-oraport=1521 \ ...... 執(zhí)行命令: ./initdb -D ../data ./pg_ctl -D ../data start ./psql -d postgres -p 1521
05 有關配置參數(shù)介紹


官方網(wǎng)址:
社區(qū)倉庫:
https://github.com/IvorySQL/IvorySQL
以上就是postgresql IvorySQL新增命令及相關配置參數(shù)詳解的詳細內(nèi)容,更多關于postgresql IvorySQL命令參數(shù)的資料請關注腳本之家其它相關文章!
相關文章
PostgreSQL實現(xiàn)批量插入、更新與合并操作的方法
這篇文章主要給大家介紹了關于PostgreSQL實現(xiàn)批量插入、更新與合并操作的相關資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-02-02
解決PostgreSQL數(shù)據(jù)庫連接報錯:psql:?error:?FATAL:?password?authent
這篇文章主要給大家介紹了關于如何解決PostgreSQL數(shù)據(jù)庫連接報錯:psql:?error:?FATAL:?password?authentication?failed?for?user?"postgres"的相關資料,在使用PostgreSQL時,一些關鍵配置的錯誤可能導致數(shù)據(jù)庫無法正常啟動,需要的朋友可以參考下2024-05-05
PostgreSQL數(shù)據(jù)庫中匿名塊的寫法實例
這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫中匿名塊的寫法實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法
在數(shù)據(jù)庫并發(fā)操作環(huán)境中,多個事務同時嘗試更新相同的數(shù)據(jù)可能導致沖突,PostgreSQL?提供了一系列機制來處理這些并發(fā)更新沖突,以確保數(shù)據(jù)的一致性和完整性,所以本文給大家介紹了PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法,需要的朋友可以參考下2024-07-07
postgresql 實現(xiàn)多表關聯(lián)刪除
這篇文章主要介紹了postgresql 實現(xiàn)多表關聯(lián)刪除操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
如何將excel表格數(shù)據(jù)導入postgresql數(shù)據(jù)庫
這篇文章主要介紹了如何將excel表格數(shù)據(jù)導入postgresql數(shù)據(jù)庫,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

