CN106547765B - 基于sql的数据库管理方法及装置 - Google Patents

基于sql的数据库管理方法及装置 Download PDF

Info

Publication number
CN106547765B
CN106547765B CN201510601117.XA CN201510601117A CN106547765B CN 106547765 B CN106547765 B CN 106547765B CN 201510601117 A CN201510601117 A CN 201510601117A CN 106547765 B CN106547765 B CN 106547765B
Authority
CN
China
Prior art keywords
database
dynamic
statement
script
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510601117.XA
Other languages
English (en)
Other versions
CN106547765A (zh
Inventor
林竞文
曹志勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen ZNV Technology Co Ltd
Original Assignee
Shenzhen ZNV Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen ZNV Technology Co Ltd filed Critical Shenzhen ZNV Technology Co Ltd
Priority to CN201510601117.XA priority Critical patent/CN106547765B/zh
Publication of CN106547765A publication Critical patent/CN106547765A/zh
Application granted granted Critical
Publication of CN106547765B publication Critical patent/CN106547765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于SQL的数据库管理方法,该方法包括:接收用户输入的SQL语句;对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。本发明还公开了一种基于SQL的数据库管理装置。采用本发明,可直接根据该带有逻辑结构的动态化SQL脚本对数据库进行更新,提高数据库更新效率。

Description

基于SQL的数据库管理方法及装置
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种基于SQL的数据库管理方法及装置。
背景技术
目前,在很多的计算机应用***中,以SQL(Structured Query Language,结构化查询语言)语言为基础的数据库承担了***业务数据的存储和业务逻辑的计算。在计算机开发过程中,随着业务***的扩大,不断产生新的数据库脚本,在脚本管理上出现各种补丁,但随着业务***的不断扩大,容易造成sql脚本的缺失,并且对于跨一套或几套通用的数据库应用***并在其基础上根据业务进行不断开发和扩展时,对数据库维护起来非常耗时耗力,尤其在现场进行数据库跨多级功能升级时,每次都需提取增量脚本,由此往往容易遗漏部分脚本功能,而无法实现对数据库进行升级更新。在以往的数据库脚本功能管理中容易出现:A开发者依据业务需求A,在数据库产品库平台上,对数据库***增加对象,完成后,需要花费大量的时间提取出升级SQL脚本(即提出增量脚本),才实现业务A的功能。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种基于SQL的数据库管理方法及装置,旨在解决现有技术中对数据库进行升级时,需要提取增量脚本,容易遗漏部分脚本而导致对数据库升级失败的技术问题。
根据用户输入的SQL语句对数据库中的数据库对象进行更新,以便在实际生产环境中可直接调用该数据库中的数据库对象。
为实现上述目的,本发明提供一种基于SQL的数据库管理方法,该方法包括:
接收用户输入的SQL语句;
对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;
根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
优选地,所述对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本的步骤包括:
对所述接收的SQL语句进行预处理;
对所述预处理后的SQL语句进行动态化,生成动态化SQL语句;
根据预设的关键字与逻辑模板的映射关系,获取所述动态化SQL语句对应的逻辑模板;将所述动态化SQL语句套用所述获取的逻辑模板,并根据数据库语法,将所述已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
优选地,所述对所述接收的SQL语句进行预处理包括:对所述接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
优选地,所述根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新的步骤包括:
判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象;
若所述数据库中不存在该带有逻辑结构的SQL脚本对应的数据库对象,则根据所述带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象。
优选地,所述判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象的步骤之后,该方法还包括:
若所述数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,则根据所述带有逻辑结构的动态化SQL脚本对对应的数据库对象进行修改。
此外,为实现上述目的,本发明还提供一种基于SQL的数据库管理装置,该装置包括:
接收模块,用于接收用户输入的SQL语句;
生成模块,用于对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;
更新模块,用于根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
优选地,所述生成模块包括:
预处理单元,用于对所述接收的SQL语句进行预处理;
第一生成单元,用于对所述预处理后的SQL语句进行动态化,生成动态化SQL语句;
第二生成单元,用于根据预设的关键字与逻辑模板的映射关系,获取所述动态化SQL语句对应的逻辑模板;将所述动态化SQL语句套用所述获取的逻辑模板,并根据数据库语法,将所述已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
优选地,所述对所述接收的SQL语句进行预处理包括:对所述接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
优选地,所述更新模块包括:
判断单元,用于判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象;
第一更新单元,用于在所述数据库中不存在该带有逻辑结构的动态化SQL脚本对应的数据库对象时,根据所述带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象。
优选地,所述更新模块还还包括:
第二更新单元,用于在所述数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象时,根据所述带有逻辑结构的动态化SQL脚本对对应的数据库对象进行修改。
本发明的基于SQL的数据库管理方法及装置,通过接收用户输入的SQL语句;对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新;即对接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本,使得该生成的带有逻辑结构的动态化SQL脚本可直接用于对数据库进行更新;然后再根据该带有逻辑结构的动态化SQL脚本更新数据库,以便在实际生产环境中可直接根据该带有逻辑结构的动态化SQL脚本对数据库进行更新,提高数据库更新效率。
附图说明
图1为本发明基于SQL的数据库管理方法的优选实施例的流程示意图;
图2为本发明基于SQL的数据库管理方法中的对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本的细化流程示意图;
图3为本发明中对所述对所述接收的SQL语句进行预处理的一实施例的细化流程示意图;
图4为本发明基于SQL的数据库管理方法中的根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新的细化流程示意图;
图5为本发明基于SQL的数据库管理装置的优选实施例的结构示意图;
图6为本发明基于SQL的数据库管理装置的生成模块的细化结构示意图;
图7为本发明基于SQL的数据库管理装置的预处理单元的细化结构示意图;
图8为本发明基于SQL的数据库管理装置的更新模块的细化结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明基于SQL的数据库管理方法的优选实施例的流程示意图,该方法包括:
S10、接收用户输入的SQL语句。
用户根据待更新的数据库对象输入SQL语句。在该步骤中,接收用户输入的SQL语句,数据库对象包括表、索引、视图、图表、缺醒值、规则、触发器、语法、存储过程、用户、序列。如当待更新的数据库对象为表,且该表如表一所示。
表一:
Figure BDA0000806569440000051
根据该表一接收用户输入的SQL语句,接收的SQL语句如下:
Figure BDA0000806569440000052
S20、对该接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本。
对在步骤S10中接收的SQL语句进行处理,如进行可用性校验以及规范化处理,生成带有逻辑结构的动态化SQL脚本。具体的,可对该接收的SQL语句按照预设规则进行特定的预格式化处理、细节拆分、细节格式转化、动态化SQL语句转化、套用逻辑模板等,生成带有逻辑结构的动态化SQL脚本,该带有逻辑结构的动态化SQL脚本可直接用来更新数据库。
可将该生成的带有逻辑结构的动态化SQL脚本分类存储,如按照该带有逻辑结构的动态化SQL脚本的所属的项目类型进行分类存储,如将属于项目1的所有带有逻辑结构的动态化SQL脚本存储在文件夹1中,将属于项目2的所有带有逻辑结构的动态化SQL脚本存储在文件夹2中,等等,方便管理和维护。现场人员部署升级数据库时,可直接调用已经存储好的带有逻辑结构的动态化SQL脚本对数据库进行更新。
S30、根据该带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
执行该带有逻辑结构的SQL脚本以生成对应的数据库对象,根据该生成的数据库对象对该数据库中的数据库对象进行更新。即可直接根据该带有逻辑结构的SQL脚本对数据库进行更新,而不需要提取增量脚本对数据库进行更新。
当该带有逻辑结构的动态化SQL脚本是删除脚本时,则将数据库中的对应数据库对象删除;当该带有逻辑结构的动态化SQL脚本是增加脚本时,则在该数据库中增加对应的数据库对象;当该带有逻辑结构的动态化SQL脚本是修改脚本时,则在该数据库中对应数据库对象进行修改。
采用上述实施例,通过接收用户输入的SQL语句;对该接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;根据该带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新;即对接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本,使得该生成的带有逻辑结构的动态化SQL脚本可直接用于对数据库进行更新;然后再根据该带有逻辑结构的动态化SQL脚本更新数据库,以便在实际生产环境中可直接更新该数据库中的数据库对象。
如图2所示,图2为本发明基于SQL的数据库管理方法中的对该接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本的细化流程示意图,详述如下:
S21、对该接收的SQL语句进行预处理。
在该步骤中,对该接收的SQL语句进行预处理,以生成可用的且规范化的SQL语句。
对该接收的SQL语句进行预处理包括:对该接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
对该接收的SQL语句进行预格式化处理,以删除多余的空格、删除多余的回车符、删除无用的注释等。较佳的,在对接收的SQL语句进行预格式化处理时,可根据预设规则进行特定的预格式化处理,如将接收的SQL语句中的注释删除、将接收的SQL语句中的多余空格删除等。在对接收的SQL语句进行细节拆分时,可根据预设规则进行特定的细节拆分,如根据预设的拆分符号对接收的SQL语句进行细节拆分,对于数据库对象表、主键之间,该拆分符号可以为“;回车”,对于数据库表间字段,该拆分符号为“,回车”。在对接收的SQL语句进行细节格式化转化时,可根据预设规则进行特定的细节格式转化,如对关键字大小写进行转换、对单引号替换成两个单引用号、对中文标点替换成英文字符标点等。
S22、对该预处理后的SQL语句进行动态化,生成动态化SQL语句。
对该预处理后的SQL语句赋予变量v_sql,生成动态化SQL语句。如该预处理后的SQL语句为:
alter table T1add COL1char(10)default”0”;
对该预处理后的SQL语句进行动态化,生成动态化SQL语句,为:
v_sql:='alter table T1add COL1char(10)default”0”';
如此,该预处理后的SQL语句被赋于变量v_sql,变成了动态SQL语句。
S23、根据预设的关键字与逻辑模板的映射关系,获取该动态化SQL语句对应的逻辑模板;将该动态化SQL语句套用该获取的逻辑模板,并根据数据库语法,将该已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
该预设的关键字与逻辑模板的映射关系中,包括了关键字creat table、droptable、alter table等,每个关键字都对应一个逻辑模板。在该步骤中,根据该预设的关键字与逻辑模板的映射关系,获取到该动态化SQL语句对应的逻辑模板,如该动态化SQL语句中包括关键字creat table,则从该关键字与逻辑模板的映射关系中可获取到该动态化SQL语句对应的逻辑模板为creat table对应的逻辑模板,然后将该动态化SQL语句套用到该获取的逻辑模板上。
如当动态化SQL语句为v_sql:=’create table T1(COL1int not null,COL1char(10)default''0'')’;套用逻辑模板后形成如下语句:
Figure BDA0000806569440000071
Figure BDA0000806569440000081
如当动态化SQL语句为v_sql:='alter table T1add COL1char(10)default”0”';套用逻辑模板后形成如下语句:
Figure BDA0000806569440000082
根据数据库语法,将已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。该数据库语法为先表再主键再外键再存储过程再触发器等顺序。
如图3所示,图3为本发明中对该接收的SQL语句进行预处理的一实施例的细化流程示意图,详细如下:
S211、对该接收的SQL语句进行预格式化处理。
可根据预设规则进行特定的预格式化处理,如将接收的SQL语句中的注释删除、将接收的SQL语句中的多余空格删除等。如对步骤S10中接收的SQL语句进行预格式化处理,将注释“---说明:创建使用的测试表”删除,将“T1 add”之间的多余空格删除,生成如下SQL语句:
Figure BDA0000806569440000083
Figure BDA0000806569440000091
S212、对预格式化处理后的SQL语句进行细节拆分。
根据数据库对象创建语法,预先定义好要拆分的数据库对象及不需要拆分的数据库对象。对于要拆分的数据库对象,对数据库对象的SQL语句以预设的拆分字符进行拆分处理,拆分成子语句。例如,对于数据库对象表、主键之间,该拆分符号可以为“;回车”,对于数据库表间字段,该拆分符号为“,回车”。
如,对步骤S211中的预格式化处理后的SQL语句进行拆分,以拆分符号“;回车”进行拆分,拆分成4个子句,如下:
Figure BDA0000806569440000092
对于字句a),可对表字段进行二次拆分,以拆分符号“,回车”进行拆分,拆分成2个子句,如下:
e)、COL1int not null
f)、COL2char(10)default'0'
S213、对细节拆分后的SQL语句进行细节格式转化。
可根据预设规则进行特定的细节格式转化,如对关键字大小写进行转换、对单引号替换成两个单引用号、对中文标点替换成英文字符标点等,生成形式符合规范的SQL语句。
如对步骤S212中的进行细节拆分后的SQL进行细节格式转化,将COL2 char(10)default'0'转化为:COL2char(10)default''0'',即将单引号替换成两个单引号;将Altertable转化为:alter table,即将关键字中的大写改成小写。
在其它实施例中,对该接收的SQL语句进行预处理时,预格式化处理、细节拆分、细节格式转化的执行顺序可任意设置。
参照图4,图4为本发明中根据该带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新的细化流程示意图,详述如下:
S31、判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,若该数据库中不存在该带有逻辑结构的SQL脚本对应的数据库对象,则执行步骤S32,否则执行S33。
将该带有逻辑结构的动态化SQL语句对应的数据库对象与该数据库中的数据库对象进行一一匹配,若在该数据库中,有数据库对象与该带有逻辑结构的SQL脚本对应的数据库对象匹配,则认为该数据中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象。如,当该带有逻辑结构的动态化SQL语句对应的数据库对象为表T1,在该数据库中也有表T1,则可以确定该数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象。
S32、根据该带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象。
在该步骤中,由于数据库中不存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,则在该数据库中新增该带有逻辑结构的动态化SQL脚本的数据库对象,对该数据库进行更新。
S33、根据该带有逻辑结构的动态化SQL脚本对数据库中对应的数据库对象进行修改。
在该步骤中,数据库中已经存在该带有逻辑结构的动态化SQL语句对应的数据库对象,但是由于该带有逻辑结构的动态化SQL语句对应的数据库对象与该数据库中存在的对应的数据库对象的具体内容可能存在差异,则需要根据该带有逻辑结构的动态化SQL语句对对应的数据库对象进行修改,如该带有逻辑结构的动态化SQL语句对应的数据库对象为T1,包括字段COL1,但是数据库中的数据库对象表T1不包括字段COL1,则在该数据库中的数据库对象表T1中增加字段COL1,完成为该数据库对象T1的修改,实现对该数据库的更新。
参照图5,图5为本发明基于SQL的数据库管理装置的优选实施例的结构示意图,该装置包括:
接收模块10,用于接收用户输入的SQL语句;
生成模块20,用于对该接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本;
更新模块30,用于根据该带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
用户根据待更新的数据库对象输入SQL语句。该接收模块10接收用户输入的SQL语句,数据库对象包括表、索引、视图、图表、缺醒值、规则、触发器、语法、存储过程、用户、序列。如当待更新的数据库对象为表,且该表如上述表一所示。
根据上述表一接收用户输入的SQL语句,接收的SQL语句如下:
Figure BDA0000806569440000111
该生成模块20在对接收模块10接收的SQL语句进行处理,如进行可用性校验以及规范化处理,生成带有逻辑结构的动态化SQL脚本。具体的,可对该接收的SQL语句按照预设规则进行特定的预格式化处理、细节拆分、细节格式转化、动态化SQL语句转化、套用逻辑模板等,生成带有逻辑结构的动态化SQL脚本,该带有逻辑结构的动态化SQL脚本可直接用来更新数据库。
可将该生成的带有逻辑结构的动态化SQL脚本分类存储,如按照该带有逻辑结构的动态化SQL脚本的所属的项目类型进行分类存储,如将属于项目1的所有带有逻辑结构的动态化SQL脚本存储在文件夹1中,将属于项目2的所有带有逻辑结构的动态化SQL脚本存储在文件夹2中,等等,方便管理和维护。现场人员部署升级数据库时,可直接调用已经存储好的带有逻辑结构的动态化SQL脚本对数据库进行更新。
该更新模块30执行该带有逻辑结构的SQL脚本以生成对应的数据库对象,根据该生成的数据库对象对该数据库中的数据库对象进行更新。即可直接根据该带有逻辑结构的SQL脚本对数据库进行更新,而不需要提取增量脚本对数据库进行更新。
当该带有逻辑结构的动态化SQL脚本是删除脚本时,则将数据库中的对应数据库对象删除;当该带有逻辑结构的动态化SQL脚本是增加脚本时,则在该数据库中增加对应的数据库对象;当该带有逻辑结构的动态化SQL脚本是修改脚本时,则在该数据库中对应数据库对象进行修改。
进一步的,如图6所示,该生成模块20包括:
预处理单元21,用于对该接收的SQL语句进行预处理;
第一生成单元22,用于对该预处理后的SQL语句进行动态化,生成动态化SQL语句;
第二生成单元23,用于根据预设的关键字与逻辑模板的映射关系,获取该动态化SQL语句对应的逻辑模板;将该动态化SQL语句套用该获取的逻辑模板,并根据数据库语法,将该已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
该预处理单元21对该接收的SQL语句进行预处理,以生成可用的且规范化的SQL语句。
对该接收的SQL语句进行预处理包括:对该接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
对该接收的SQL语句进行预格式化处理,以删除多余的空格、删除多余的回车符、删除无用的注释等。较佳的,在对接收的SQL语句进行预格式化处理时,可根据预设规则进行特定的预格式化处理,如将接收的SQL语句中的注释删除、将接收的SQL语句中的多余空格删除等。在对接收的SQL语句进行细节拆分时,可根据预设规则进行特定的细节拆分,如根据预设的拆分符号对接收的SQL语句进行细节拆分,对于数据库对象表、主键之间,该拆分符号可以为“;回车”,对于数据库表间字段,该拆分符号为“,回车”。在对接收的SQL语句进行细节格式化转化时,可根据预设规则进行特定的细节格式转化,如对关键字大小写进行转换、对单引号替换成两个单引用号、对中文标点替换成英文字符标点等。
该第一生成单元22对该预处理后的SQL语句赋予变量v_sql,生成动态化SQL语句。如该预处理后的SQL语句为:
alter table T1add COL1char(10)default”0”;
对该预处理后的SQL语句进行动态化,生成动态化SQL语句,为:
v_sql:='alter table T1add COL1char(10)default”0”';
如此,该预处理后的SQL语句被赋于变量v_sql,变成了动态SQL语句。
该预设的关键字与逻辑模板的映射关系中,包括了关键字creat table、droptable、alter table等,每个关键字都对应一个逻辑模板。该第二生成单元23根据该预设的关键字与逻辑模板的映射关系,获取到该动态化SQL语句对应的逻辑模板,如该动态化SQL语句中包括关键字creat table,则从该关键字与逻辑模板的映射关系中可获取到该动态化SQL语句对应的逻辑模板为creat table对应的逻辑模板,然后将该动态化SQL语句套用到该获取的逻辑模板上。
如当动态化SQL语句为v_sql:=’create table T1(COL1int not null,COL1char(10)default''0'')’;套用逻辑模板后形成如下语句:
Figure BDA0000806569440000131
如当动态化SQL语句为v_sql:='alter table T1add COL1char(10)default”0”';套用逻辑模板后形成如下语句:
Figure BDA0000806569440000132
Figure BDA0000806569440000141
该第二生成单元23根据数据库语法,将已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。该数据库语法为先表再主键再外键再存储过程再触发器等顺序。
进一步的,如图7所示,该预处理单元21包括:
第一预处理子单元211,用于对该接收的SQL语句进行预格式化处理;
第二预处理子单元212,用于对预格式化处理后的SQL语句进行细节拆分;
第三预处理子单元213,用于对细节拆分后的SQL语句进行细节格式转化。
该第一预处理子单元211可根据预设规则进行特定的预格式化处理,如将接收的SQL语句中的注释删除、将接收的SQL语句中的多余空格删除等。如对步骤S10中接收的SQL语句进行预格式化处理,将注释“---说明:创建使用的测试表”删除,将“T1add”之间的多余空格删除,生成如下SQL语句:
Figure BDA0000806569440000142
根据数据库对象创建语法,预先定义好要拆分的数据库对象及不需要拆分的数据库对象。对于要拆分的数据库对象,该第二预处理子单元212对数据库对象的SQL语句以预设的拆分字符进行拆分处理,拆分成子语句。例如,对于数据库对象表、主键之间,该拆分符号可以为“;回车”,对于数据库表间字段,该拆分符号为“,回车”。
如,对第一预处理子单元211预格式化处理后的SQL语句进行拆分,以拆分符号“;回车”进行拆分,拆分成4个子句,如下:
Figure BDA0000806569440000151
对于字句a),可对表字段进行二次拆分,以拆分符号“,回车”进行拆分,拆分成2个子句,如下:
e)、COL1int not null
f)、COL2char(10)default'0'
该第三预处理子单元213可根据预设规则进行特定的细节格式转化,如对关键字大小写进行转换、对单引号替换成两个单引用号、对中文标点替换成英文字符标点等,生成形式符合规范的SQL语句。
如对进行细节拆分后的SQL进行细节格式转化,将COL2char(10)default'0'转化为:COL2char(10)default''0'',即将单引号替换成两个单引号;将Alter table转化为:alter table,即将关键字中的大写改成小写。
在其它实施例中,对该接收的SQL语句进行预处理时,预格式化处理、细节拆分、细节格式转化的执行顺序可任意设置。
进一步的,如图8所示,该更新模块30包括:
判断单元31,用于判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象;
第一更新单元32,用于在该数据库中不存在该带有逻辑结构的SQL脚本对应的数据库对象时,根据该带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象;
第二更新单元33,用于在该数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象时,根据该带有逻辑结构的动态化SQL脚本对对应的数据库对象进行修改。
将该带有逻辑结构的动态化SQL语句对应的数据库对象与该数据库中的数据库对象进行一一匹配,若在该数据库中,有数据库对象与该带有逻辑结构的SQL脚本对应的数据库对象匹配,则该判断单元31认为该数据中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象。如,当该带有逻辑结构的动态化SQL语句对应的数据库对象为表T1,在该数据库中也有表T1,则可以确定该数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象。
当数据库中不存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,则该第一更新单元32在该数据库中新增该带有逻辑结构的动态化SQL脚本的数据库对象,对该数据库进行更新。
当数据库中已经存在该带有逻辑结构的动态化SQL语句对应的数据库对象,但是由于该带有逻辑结构的动态化SQL语句对应的数据库对象与该数据库中存在的对应的数据库对象的具体内容可能存在差异,则该第二更新单元33需要根据该带有逻辑结构的动态化SQL语句对对应的数据库对象进行修改,如该带有逻辑结构的动态化SQL语句对应的数据库对象为T1,包括字段COL1,但是数据库中的数据库对象表T1不包括字段COL1,则在该数据库中的数据库对象表T1中增加字段COL1,完成为该数据库对象T1的修改,实现对该数据库的更新。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于SQL的数据库管理方法,其特征在于,该方法包括:
接收用户输入的SQL语句;
对所述接收的SQL语句进行可用性校验以及规范化处理,生成带有逻辑结构的动态化SQL脚本,其中,所述对所述接收的SQL语句进行可用性校验以及规范化处理的步骤包括可对所述接收的SQL语句按照预设规则进行特定的预格式化处理、细节拆分、细节格式转化、动态化SQL语句转化和套用逻辑模板;
根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
2.如权利要求1所述的基于SQL的数据库管理方法,其特征在于,所述对所述接收的SQL语句进行处理,生成带有逻辑结构的动态化SQL脚本的步骤包括:
对所述接收的SQL语句进行预处理;
对所述预处理后的SQL语句进行动态化,生成动态化SQL语句;
根据预设的关键字与逻辑模板的映射关系,获取所述动态化SQL语句对应的逻辑模板;将所述动态化SQL语句套用所述获取的逻辑模板,并根据数据库语法,将所述已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
3.如权利要求2所述的基于SQL的数据库管理方法,其特征在于,所述对所述接收的SQL语句进行预处理包括:对所述接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
4.如权利要求1所述的基于SQL的数据库管理方法,其特征在于,所述根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新的步骤包括:
判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象;
若所述数据库中不存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,则根据所述带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象。
5.如权利要求4所述的基于SQL的数据库管理方法,其特征在于,所述判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象的步骤之后,该方法还包括:
若所述数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象,则根据所述带有逻辑结构的动态化SQL脚本对对应的数据库对象进行修改。
6.一种基于SQL的数据库管理装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的SQL语句;
生成模块,用于对所述接收的SQL语句进行可用性校验以及规范化处理,生成带有逻辑结构的动态化SQL脚本,其中,所述对所述接收的SQL语句进行可用性校验以及规范化处理的步骤包括可对所述接收的SQL语句按照预设规则进行特定的预格式化处理、细节拆分、细节格式转化、动态化SQL语句转化和套用逻辑模板;
更新模块,用于根据所述带有逻辑结构的动态化SQL脚本对数据库中的数据库对象进行更新。
7.如权利要求6所述的基于SQL的数据库管理装置,其特征在于,所述生成模块包括:
预处理单元,用于对所述接收的SQL语句进行预处理;
第一生成单元,用于对所述预处理后的SQL语句进行动态化,生成动态化SQL语句;
第二生成单元,用于根据预设的关键字与逻辑模板的映射关系,获取所述动态化SQL语句对应的逻辑模板;将所述动态化SQL语句套用所述获取的逻辑模板,并根据数据库语法,将所述已套用逻辑模板的动态化SQL语句合并,生成带有逻辑结构的动态化SQL脚本。
8.如权利要求7所述的基于SQL的数据库管理装置,其特征在于,所述对所述接收的SQL语句进行预处理包括:对所述接收的SQL语句进行预格式化处理、细节拆分及/或细节格式转化。
9.如权利要求6所述的基于SQL的数据库管理装置,其特征在于,所述更新模块包括:
判断单元,用于判断该数据库中是否存在该带有逻辑结构的动态化SQL脚本对应的数据库对象;
第一更新单元,用于在所述数据库中不存在该带有逻辑结构的SQL脚本对应的数据库对象时,根据所述带有逻辑结构的动态化SQL脚本在数据库中创建对应的数据库对象。
10.如权利要求9所述的基于SQL的数据库管理装置,其特征在于,所述更新模块还还包括:
第二更新单元,用于在所述数据库中存在该带有逻辑结构的动态化SQL脚本对应的数据库对象时,根据所述带有逻辑结构的动态化SQL脚本对对应的数据库对象进行修改。
CN201510601117.XA 2015-09-18 2015-09-18 基于sql的数据库管理方法及装置 Active CN106547765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510601117.XA CN106547765B (zh) 2015-09-18 2015-09-18 基于sql的数据库管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510601117.XA CN106547765B (zh) 2015-09-18 2015-09-18 基于sql的数据库管理方法及装置

Publications (2)

Publication Number Publication Date
CN106547765A CN106547765A (zh) 2017-03-29
CN106547765B true CN106547765B (zh) 2020-07-17

Family

ID=58362244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510601117.XA Active CN106547765B (zh) 2015-09-18 2015-09-18 基于sql的数据库管理方法及装置

Country Status (1)

Country Link
CN (1) CN106547765B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073401B (zh) * 2017-12-29 2020-09-15 广州市玄武无线科技股份有限公司 一种业务逻辑的执行方法、装置及电子设备
US11036682B2 (en) * 2018-05-31 2021-06-15 Oracle International Corporation Flexible energy information aggregation
CN110727693A (zh) * 2018-07-16 2020-01-24 中兴通讯股份有限公司 访问异构数据库的方法、装置、设备、插件及存储介质
CN110865828A (zh) * 2018-08-28 2020-03-06 成都鼎桥通信技术有限公司 数据升级方法、装置、设备及计算机可读存储介质
CN110968591A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 查询语句的生成方法、装置、存储介质及处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944084A (zh) * 2009-07-09 2011-01-12 镇江华扬信息科技有限公司 一种基于sql脚本和ftp传输技术的数据库自动操作***
CN102402559A (zh) * 2010-09-16 2012-04-04 中兴通讯股份有限公司 一种数据库升级脚本的生成方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683315B2 (en) * 2006-11-06 2014-03-25 Eci Software, Inc. System and method for creating integrated web form and database applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944084A (zh) * 2009-07-09 2011-01-12 镇江华扬信息科技有限公司 一种基于sql脚本和ftp传输技术的数据库自动操作***
CN102402559A (zh) * 2010-09-16 2012-04-04 中兴通讯股份有限公司 一种数据库升级脚本的生成方法和装置

Also Published As

Publication number Publication date
CN106547765A (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
CN106547765B (zh) 基于sql的数据库管理方法及装置
US9971967B2 (en) Generating a superset of question/answer action paths based on dynamically generated type sets
KR102491172B1 (ko) 자연어 질의응답 시스템 및 그 학습 방법
CN111444705A (zh) 纠错方法、装置、设备及可读存储介质
CN106843840B (zh) 一种基于相似度分析的源代码版本演化注释复用方法
US10706030B2 (en) Utilizing artificial intelligence to integrate data from multiple diverse sources into a data structure
US20200356726A1 (en) Dependency graph based natural language processing
KR20210092698A (ko) Spo의 추출 방법, 장치, 전자기기 및 저장 매체
EP1352330A1 (en) Method and system for generating structured data from semi-structured data sources
CN108829884B (zh) 数据映射方法及装置
CN112115232A (zh) 一种数据纠错方法、装置及服务器
CN111008309B (zh) 查询方法及装置
CN103488738A (zh) 一种自动实现java对象及数据表sql文件的方法及***
JP2016157407A (ja) テキスト分析及び応答システムのための語彙意味パターンの事前構築方法
CN101308512B (zh) 一种基于网页的互译翻译对抽取方法及装置
EP4364044A1 (en) Automated troubleshooter
JP7197542B2 (ja) テキストワードセグメンテーションの方法、装置、デバイスおよび媒体
CN111708800A (zh) 查询方法、装置及电子设备
CN113779062A (zh) Sql语句生成方法、装置、存储介质及电子设备
CN113297251A (zh) 多源数据检索方法、装置、设备及存储介质
CN111984774A (zh) 搜索方法、装置、设备以及存储介质
CN103927176A (zh) 一种基于层次主题模型的程序特征树的生成方法
CN113032371A (zh) 数据库语法分析方法、装置和计算机设备
CN102541824B (zh) 一种用以实现文档修改的方法及***
CN104572111B (zh) 一种基于相关主题模型的程序理解和特征定位方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518057 Energy Storage Building, 3099 South Keyuan Road, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: SHENZHEN ZNV TECHNOLOGY Co.,Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District South Road four No. 034 high-tech industrial village W1A building 4 layer

Applicant before: SHENZHEN ZNV TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant