IvorySQL新增命令及有关配置参数介绍

2023-12-13 18:12

本文主要是介绍IvorySQL新增命令及有关配置参数介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在之前的一篇文章中,我们简要介绍了「IvorySQL的IVY_GUC框架介绍与使用指南」,除了数据类型和内置函数的兼容性外,IvorySQL还新增了一些GUC参数,以便更好地对数据库变量进行设置和对数据库进行控制。

接下来,本文将详细介绍IvorySQL支持多种SQL语句,并且可以与多种数据库进行交互。在IvorySQL中,新增命令和配置参数可以帮助优化查询性能和查询灵活性

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)要检查是否已成功指定模式,请启动数据库。运行命令:./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 connectionsdone
server started

1.2 初始化oracle兼容模式

(1)执行初始化数据库命令:./initdb -D ../data -m oracle

(2)验证初始化是否成功,并通过./pg_ctl -D ../data start启动数据库。启动后会显示以下内容

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 connectionsdone
server started

1.3 如果不添加-m参数,则默认为oralce兼容模式

(1)执行初始化数据库命令:/initdb -D ../data

(2)通过./pg_ctl -D ../data start启动数据库。启动后会显示以下内容

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 connectionsdone
server started

02 -C参数命令设置大小写转换

为了确保PG和Oracle在引用标识符大小写兼容方面的良好体验,IvorySQL提供了三种引用标识符的大小写转换模式以适应不同的场景。

在初始化数据库时,可以通过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命令

在成功连接数据库后,您可以输入SQL语句\parser来查看当前数据库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命令

在执行configure时可以加上--with-oraport=number命令,将number设置为服务器和客户端的默认端口。这个端口可以在后续进行修改,但如果在此处声明,则服务器和客户端将具有相同的编译好的默认值,这样会更加方便。

相关文档链接:

https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/22

具体示例如下:

./configure  CFLAGS="-O0 -g" \
--prefix=$PWD/inst \
--with-oraport=1521 \
......执行命令:
./initdb -D ../data
./pg_ctl -D ../data start
./psql -d postgres -p 1521

05 有关配置参数介绍

变量名

描述

ivorysql.compatible_mode

表示当前兼容的数据库类型(如PG或Oracle)。您可以通过show命令查看当前的兼容模式。使用set命令更改该变量。使用reset命令重置为连接时的数据库模式。注意reset all可能会影响该变量。

ivorysql.database_mode

表示当前兼容的数据库类型(如PG或Oracle)。您可以通过show命令查看当前的兼容模式。set、reset、reset all命令并不影响该变量。

ivorysql.datetime_ignore_nls_mask

表示日期格式是否会受NLS参数影响。默认该变量的值为0,表示日期格式不受NLS参数的影响。您可以通过set命令来设置,reset 命令为重置,reset all命令可能会重置该变量的值。

ivorysql.enable_emptystring_to_NULL

可以取值为on或off。当该变量设置为on时,插入的空字符串将转为NULL值并存储。

ivorysql.identifier_case_switch

该变量具有三种模式:“normal”,“interchange”以及“lowercase”,默认设置为“interchange”。该变量用于设置字符大小写转换的模式。

ivorysql.listen_address

表示兼容模式监听的地址。在初始化数据库时,将从ivorysql.conf文件中读取该配置。如果在配置文件中修改该值,需要重启数据库才能生效。您可以通过show命令查看当前的监听地址。

ivorysql.port

表示兼容模式下连接的端口号。在初始化数据库时,将从ivorysql.conf文件中读取该配置。如果在配置文件中修改该值,需要重启数据库才能生效。您可以通过show命令查看当前的链接端口号。

nls_date_format

表示默认的日期格式,您可以通过show命令查看当前的默认日期格式,默认为‘YYYY-MM-DD’。您可以通过set命令设置默认日期格式,通过reset命令重置回默认值,reset all 命令可能会重置该变量。

nls_length_semantic

表示兼容oracle的同名参数,控制一个字符所占内存的大小。

nls_timestamp_format

表示兼容oracle的同名参数,控制带时间的日期格式。

nls_timestamp_tz_format

表示兼容oracle的同名参数,控制带时区的日期格式。

shared_preload_libraries

在初始化数据库时从ivorysql.conf文件中读取,您可以通过show命令查看其设置。该参数主要作用是对liboracle_parser和ivorysql_ora进行预加载。

官方网址:

https://www.ivorysql.org

社区仓库:

https://github.com/IvorySQL/IvorySQL

IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!

记得在GitHub给我们一个 ⭐奥~

这篇关于IvorySQL新增命令及有关配置参数介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/489442

相关文章

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过