基于postgreSQL客户端PSQL的数据交互方法及交互装置制造方法及图纸

技术编号:28871415 阅读:14 留言:0更新日期:2021-06-15 23:04
本发明专利技术提出了一种基于postgreSQL客户端PSQL的数据交互方法及交互装置,方法包括:判断数据定义语句是否为PL/SQL对象数据定义语句;当数据定义语句不是PL/SQL对象数据定义语句时,按照SQL语法解析数据定义语句;当数据定义语句是PL/SQL对象数据定义语句时,判断PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句;若是PostgreSQL语法语句,则按照PostgreSQL的预设语法解析数据定义语句;若是Oracle语法语句,则按Oracle的预设语法解析数据定义语句;将解析后的数据定义语句发送至数据库。根据本发明专利技术的基于postgreSQL客户端PSQL的数据交互方法,可以正确过滤PostgreSQL与Oracle的语法差异,实现两种语法模式的平滑兼容与自动切换。而且,可以降低PostgreSQL使用者的学习成本,提高应用迁移的效率。

【技术实现步骤摘要】
基于postgreSQL客户端PSQL的数据交互方法及交互装置
本专利技术涉及数据交互
,尤其涉及一种基于postgreSQL客户端PSQL的数据交互方法及交互装置。
技术介绍
PSQL是PostgreSQL中的一个命令行交互式客户端工具,它允许交互的输入SQL命令,并把SQL命令完整的发送给PostgreSQL服务器。现有PSQL在交互模式下用户需要输入PL/SQL语法中的函数或者存储过程时有个固有规则,即必须使用美元符号或者单引号将PL过程块包裹起来。因为PSQL不兼容Oracle中的PL/SQL语法,导致应用从Oracle向PostgreSQL迁移变得如鲠在喉,徒增工作投入。
技术实现思路
本专利技术要解决的技术问题是如何提高PSQL对不同语法数据的兼容性,本专利技术提出一种基于postgreSQL客户端PSQL的数据交互方法及交互装置。根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互方法,包括:判断数据定义语句是否为PL/SQL对象数据定义语句;当所述数据定义语句不是PL/SQL对象数据定义语句时,按照SQL语法解析所述数据定义语句;当所述数据定义语句是PL/SQL对象数据定义语句时,判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句;若是PostgreSQL语法语句,则按照PostgreSQL的预设语法解析所述数据定义语句;若是Oracle语法语句,则按Oracle的预设语法解析所述数据定义语句;将解析后的所述数据定义语句发送至数据库。根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互方法,可以正确过滤PostgreSQL与Oracle的语法差异,实现两种语法模式的平滑兼容与自动切换。而且,可以降低PostgreSQL使用者的学习成本,提高应用迁移的效率。根据本专利技术的一些实施例,所述判断数据定义语句是否为PL/SQL对象数据定义语句,包括:识别所述数据定义语句中是否存在AS或IS关键字;若不存在,则判定所述数据定义语句不是PL/SQL对象数据定义语句;若存在,则根据AS或IS关键字前的字符组合判断所述数据定义语句是否为PL/SQL对象数据定义语句。在本专利技术的一些实施例中,所述根据AS或IS关键字前的字符组合判断所述数据定义语句是否为PL/SQL对象数据定义语句,包括:识别AS或IS关键字前的字符组合是否为CREATEFUNCTION,或PROCEDURE,或PACKAGE;若是,则判定所述数据定义语句为PL/SQL对象数据定义语句。根据本专利技术的一些实施例,所述当所述数据定义语句是PL/SQL对象数据定义语句时,则判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句,包括:识别AS或IS关键字后是否为字符串限定符;若是,则判定所述数据PL/SQL对象数据定义语句为PostgreSQL语法语句;若否,则判定所述数据PL/SQL对象数据定义语句为Oracle语法语句。在本专利技术的一些实施例中,当所述语句定义语句为Oracle语法语句,按Oracle的预设语法解析所述数据定义语句时,根据所述语句定义语句中的begin和end个数关系判断是否退出Oracle的预设语法解析模式。根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互装置,包括:第一判断模块,用于判断数据定义语句是否为PL/SQL对象数据定义语句;第一解析模块,用于当所述数据定义语句不是PL/SQL对象数据定义语句时,按照SQL语法解析所述数据定义语句;第二判断模块,用于当所述数据定义语句是PL/SQL对象数据定义语句时,判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句;第二解析模块,用于当判定是PostgreSQL语法语句时,按照PostgreSQL的预设语法解析所述数据定义语句;第三解析模块,用于当所述第二判定模块判定是Oracle语法语句,按Oracle的预设语法解析所述数据定义语句;发送模块,用于将解析后的所述数据定义语句发送至数据库。根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互装置,可以正确过滤PostgreSQL与Oracle的语法差异,实现两种语法模式的平滑兼容与自动切换。而且,可以降低PostgreSQL使用者的学习成本,提高应用迁移的效率。根据本专利技术的一些实施例,所述第一判断模块具体用于:识别所述数据定义语句中是否存在AS或IS关键字;若不存在,则判定所述数据定义语句不是PL/SQL对象数据定义语句;若存在,则根据AS或IS关键字前的字符组合判断所述数据定义语句是否为PL/SQL对象数据定义语句。在本专利技术的一些实施例中,所述第一判断模块还用于:识别AS或IS关键字前的字符组合是否为CREATEFUNCTION,或PROCEDURE,或PACKAGE;若是,则判定所述数据定义语句为PL/SQL对象数据定义语句。根据本专利技术的一些实施例,所述第二判断模块具体用于:识别AS或IS关键字后是否为字符串限定符;若是,则判定所述数据PL/SQL对象数据定义语句为PostgreSQL语法语句;若否,则判定所述数据PL/SQL对象数据定义语句为Oracle语法语句。在本专利技术的一些实施例中,所述交互装置还包括:模式管理模块,用于当所述语句定义语句为Oracle语法语句,按Oracle的预设语法解析所述数据定义语句时,根据所述语句定义语句中的begin和end个数关系判断是否退出Oracle的预设语法解析模式。附图说明图1为根据本专利技术实施例的PSQL和lex词法解析器交互关系示意图;图2为相关技术中PSQL对PL/SQL解析方法示意图;图3为根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互方法流程图;图4为根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互方法示意图;图5为根据本专利技术实施例的基于postgreSQL客户端PSQL的数据交互装置示意图。附图标记:交互装置100,第一判断模块110,第二判断模块120,第一解析模块210,第二解析模块220,第三解析模块230,发送模块30,模式管理模块40。具体实施方式为更进一步阐述本专利技术为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本专利技术进行详细说明如后。首先,对本专利技术中涉及当的相关概念进行相关介绍。SQL语句分为基本SQL和扩展SQL(PL/SQL),介绍如下:SQL:SQL是结构化查询语言,比较接近自然语言,使用SQL,只需要说干什么,不需本文档来自技高网...

【技术保护点】
1.一种基于postgreSQL客户端PSQL的数据交互方法,其特征在于,包括:/n判断数据定义语句是否为PL/SQL对象数据定义语句;/n当所述数据定义语句不是PL/SQL对象数据定义语句时,按照SQL语法解析所述数据定义语句;/n当所述数据定义语句是PL/SQL对象数据定义语句时,判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句;/n若是PostgreSQL语法语句,则按照PostgreSQL的预设语法解析所述数据定义语句;若是Oracle语法语句,则按Oracle的预设语法解析所述数据定义语句;/n将解析后的所述数据定义语句发送至数据库。/n

【技术特征摘要】
1.一种基于postgreSQL客户端PSQL的数据交互方法,其特征在于,包括:
判断数据定义语句是否为PL/SQL对象数据定义语句;
当所述数据定义语句不是PL/SQL对象数据定义语句时,按照SQL语法解析所述数据定义语句;
当所述数据定义语句是PL/SQL对象数据定义语句时,判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句;
若是PostgreSQL语法语句,则按照PostgreSQL的预设语法解析所述数据定义语句;若是Oracle语法语句,则按Oracle的预设语法解析所述数据定义语句;
将解析后的所述数据定义语句发送至数据库。


2.根据权利要求1所述的基于postgreSQL客户端PSQL的数据交互方法,其特征在于,所述判断数据定义语句是否为PL/SQL对象数据定义语句,包括:
识别所述数据定义语句中是否存在AS或IS关键字;
若不存在,则判定所述数据定义语句不是PL/SQL对象数据定义语句;
若存在,则根据AS或IS关键字前的字符组合判断所述数据定义语句是否为PL/SQL对象数据定义语句。


3.根据权利要求2所述的基于postgreSQL客户端PSQL的数据交互方法,其特征在于,所述根据AS或IS关键字前的字符组合判断所述数据定义语句是否为PL/SQL对象数据定义语句,包括:
识别AS或IS关键字前的字符组合是否为CREATEFUNCTION,或PROCEDURE,或PACKAGE;
若是,则判定所述数据定义语句为PL/SQL对象数据定义语句。


4.根据权利要求2所述的基于postgreSQL客户端PSQL的数据交互方法,其特征在于,所述当所述数据定义语句是PL/SQL对象数据定义语句时,则判断所述PL/SQL对象数据定义语句是PostgreSQL语法语句还是Oracle语法语句,包括:
识别AS或IS关键字后是否为字符串限定符;
若是,则判定所述数据PL/SQL对象数据定义语句为PostgreSQL语法语句;若否,则判定所述数据PL/SQL对象数据定义语句为Oracle语法语句。


5.根据权利要求1所述的基于postgreSQL客户端PSQL的数据交互方法,其特征在于,当所述语句定义语句为Oracle语法语句,按Oracle的预设语法解析所述数据定义语句时,根据所述语句定义语句中的begin和end个数关系判断是否退出Oracle的...

【专利技术属性】
技术研发人员:兰柯苗健卢健
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1