postgresql?IvorySQL新增命令及相關(guān)配置參數(shù)詳解
引言
在之前的一篇文章中,我們簡(jiǎn)要介紹了「IvorySQL的IVY_GUC框架介紹與使用指南」,除了數(shù)據(jù)類型和內(nèi)置函數(shù)的兼容性外,IvorySQL還新增了一些GUC參數(shù),以便更好地對(duì)數(shù)據(jù)庫(kù)變量進(jìn)行設(shè)置和對(duì)數(shù)據(jù)庫(kù)進(jìn)行控制。
接下來(lái),本文將詳細(xì)介紹IvorySQL支持多種SQL語(yǔ)句,并且可以與多種數(shù)據(jù)庫(kù)進(jìn)行交互。在IvorySQL中,新增命令和配置參數(shù)可以幫助優(yōu)化查詢性能和查詢靈活性。
01 初始化指定模式命令
為了滿足PG模式和兼容Oracle模式,IvorySQL特別設(shè)計(jì)了PG和Oracle兩種模式,并且可以在initdb時(shí)指定所需模式。
相關(guān)文檔鏈接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/17
具體命令如下:
1.1 初始化PG模式
(1)./initdb -D ../data -m pg
(2)要檢查是否已成功指定模式,請(qǐng)啟動(dòng)數(shù)據(jù)庫(kù)。運(yùn)行命令:./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ù)庫(kù)命令:./initdb -D ../data -m oracle
(2)驗(yàn)證初始化是否成功,并通過(guò)./pg_ctl -D ../data start啟動(dòng)數(shù)據(jù)庫(kù)。啟動(dòng)后會(huì)顯示以下內(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ù),則默認(rèn)為oralce兼容模式
(1)執(zhí)行初始化數(shù)據(jù)庫(kù)命令:/initdb -D ../data
(2)通過(guò)./pg_ctl -D ../data start啟動(dòng)數(shù)據(jù)庫(kù)。啟動(dòng)后會(huì)顯示以下內(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ù)命令設(shè)置大小寫轉(zhuǎn)換
為了確保PG和Oracle在引用標(biāo)識(shí)符大小寫兼容方面的良好體驗(yàn),IvorySQL提供了三種引用標(biāo)識(shí)符的大小寫轉(zhuǎn)換模式以適應(yīng)不同的場(chǎng)景。
在初始化數(shù)據(jù)庫(kù)時(shí),可以通過(guò)initdb命令的-C選項(xiàng)來(lái)設(shè)置大小寫轉(zhuǎn)換模式。該選項(xiàng)可以接受的值包括“normal”、“interchange”和“lowercase”。
相關(guān)文檔鏈接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/16
以下是具體命令的示例:
(1)設(shè)置正常大小寫轉(zhuǎn)換模式:./initdb -D ../data -C normal 標(biāo)識(shí)符轉(zhuǎn)換模式與原生PG相同。
(2)設(shè)置交互大小寫轉(zhuǎn)換模式:./initdb -D ../data -C interchange
(3)設(shè)置全部轉(zhuǎn)換為小寫模式:./initdb -D ../data -C lowercase
如果雙引號(hào)所引用的標(biāo)識(shí)符中的字母全部為大寫,則將大寫轉(zhuǎn)換為小寫。
測(cè)試如下
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;
如果雙引號(hào)所引用的標(biāo)識(shí)符中的字母全部為小寫,則將小寫轉(zhuǎn)換為大寫。
測(cè)試如下
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;
如果用雙引號(hào)引起來(lái)的標(biāo)識(shí)符中字母是大小寫混合的,則保持標(biāo)識(shí)符不變。
測(cè)試如下
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 將所有標(biāo)識(shí)符轉(zhuǎn)換為小寫字母。
測(cè)試如下
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ù)庫(kù)后,您可以輸入SQL語(yǔ)句\parser來(lái)查看當(dāng)前數(shù)據(jù)庫(kù)parser信息。具體實(shí)例如下:
1、輸入\parser后,如果顯示Oracle parser,則表明當(dāng)前處于Oracle parser。
如果想要切換為PG,則輸入命令:set ivorysql.comatible_mode=PG,此時(shí)客戶端仍然處于Oralce parser,需要再次輸入命令\parser,此時(shí)才能更新parser為PG parser;
2、輸入\parser后,如果顯示PG parser,則表明當(dāng)前處于PG parser。
如果想要切換為Oracle,則輸入命令:set ivorysql.comatible_mode=Oracle,此時(shí)客戶端仍然處于PG parser,需要再次輸入命令\parser,此時(shí)才能更新parser為PG parser;
04 --with-oraport命令
在執(zhí)行configure時(shí)可以加上--with-oraport=number命令,將number設(shè)置為服務(wù)器和客戶端的默認(rèn)端口。這個(gè)端口可以在后續(xù)進(jìn)行修改,但如果在此處聲明,則服務(wù)器和客戶端將具有相同的編譯好的默認(rèn)值,這樣會(huì)更加方便。
相關(guān)文檔鏈接:
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 有關(guān)配置參數(shù)介紹
官方網(wǎng)址:
社區(qū)倉(cāng)庫(kù):
https://github.com/IvorySQL/IvorySQL
以上就是postgresql IvorySQL新增命令及相關(guān)配置參數(shù)詳解的詳細(xì)內(nèi)容,更多關(guān)于postgresql IvorySQL命令參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PostgreSQL實(shí)現(xiàn)批量插入、更新與合并操作的方法
這篇文章主要給大家介紹了關(guān)于PostgreSQL實(shí)現(xiàn)批量插入、更新與合并操作的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02解決PostgreSQL數(shù)據(jù)庫(kù)連接報(bào)錯(cuò):psql:?error:?FATAL:?password?authent
這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL數(shù)據(jù)庫(kù)連接報(bào)錯(cuò):psql:?error:?FATAL:?password?authentication?failed?for?user?"postgres"的相關(guān)資料,在使用PostgreSQL時(shí),一些關(guān)鍵配置的錯(cuò)誤可能導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法正常啟動(dòng),需要的朋友可以參考下2024-05-05PostgreSQL數(shù)據(jù)庫(kù)中匿名塊的寫法實(shí)例
這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫(kù)中匿名塊的寫法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法
在數(shù)據(jù)庫(kù)并發(fā)操作環(huán)境中,多個(gè)事務(wù)同時(shí)嘗試更新相同的數(shù)據(jù)可能導(dǎo)致沖突,PostgreSQL?提供了一系列機(jī)制來(lái)處理這些并發(fā)更新沖突,以確保數(shù)據(jù)的一致性和完整性,所以本文給大家介紹了PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法,需要的朋友可以參考下2024-07-07postgresql 實(shí)現(xiàn)多表關(guān)聯(lián)刪除
這篇文章主要介紹了postgresql 實(shí)現(xiàn)多表關(guān)聯(lián)刪除操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01如何將excel表格數(shù)據(jù)導(dǎo)入postgresql數(shù)據(jù)庫(kù)
這篇文章主要介紹了如何將excel表格數(shù)據(jù)導(dǎo)入postgresql數(shù)據(jù)庫(kù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Ubuntu中卸載Postgresql出錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于在Ubuntu中卸載Postgresql出錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09