CN109471857B - 基于sql语句的数据修改方法、装置及存储介质 - Google Patents
基于sql语句的数据修改方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109471857B CN109471857B CN201811114708.4A CN201811114708A CN109471857B CN 109471857 B CN109471857 B CN 109471857B CN 201811114708 A CN201811114708 A CN 201811114708A CN 109471857 B CN109471857 B CN 109471857B
- Authority
- CN
- China
- Prior art keywords
- data
- sql
- sentence
- backup
- sql statement
- 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
Links
- 238000002715 modification method Methods 0.000 title claims abstract description 25
- 230000004048 modification Effects 0.000 claims abstract description 106
- 238000012986 modification Methods 0.000 claims abstract description 86
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000002159 abnormal effect Effects 0.000 claims description 28
- 238000004458 analytical method Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 16
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000013515 script Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据更新,揭露了一种基于SQL语句的数据修改方法,该方法包括:接收用户提出的携带第一SQL语句的数据修改请求,分析所述第一SQL语句的具体信息;然后为第一SQL语句中的源表创建备份表;执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表。本发明还揭露了一种电子装置及计算机存储介质。利用本发明,可以提高数据修改的准确性及效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于SQL语句的数据修改方法、电子装置及计算机可读存储介质。
背景技术
目前在系统运营过程中,当接收到用户提交的数据修改需求时,需要IT 人员提供一个数据处理的脚本,脚本包含待修改数据备份,数据修改,备份数据归档等。当用户同时提交大量数据修改需求时,IT人员人工写脚本容易出错,并且会浪费IT人员的时间,不能及时满足用户的响应时效需求,也无法保证数据修改的准确性。
发明内容
鉴于以上内容,本发明提供一种基于SQL语句的数据修改方法、电子装置及计算机可读存储介质,其主要目的在于通过自动生成SQL语句,提高数据修改效率及准确性。
为实现上述目的,本发明提供一种基于SQL语句的数据修改方法,该方法包括:
S1、接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则分析所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据;
S2、基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL 语句;
S3、执行所述第二SQL语句,为所述源表创建备份表;及
S4、执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表。
此外,本发明还提供一种电子装置,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的基于SQL语句的数据修改程序,所述基于SQL语句的数据修改程序被所述处理器执行时,可实现如上所述基于SQL语句的数据修改方法中的任意步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括基于SQL语句的数据修改程序,所述基于SQL语句的数据修改程序被处理器执行时,可实现如上所述基于SQL语句的数据修改方法中的任意步骤。
本发明提出的基于SQL语句的数据修改方法、电子装置及计算机可读存储介质,在接收到携带第一SQL语句的数据修改请求后,自动生成备份语句对源表进行备份,然后执行数据修改操作,一定程度上避免人为错误,提高数据修改的效率及准确性;通过对SQL语句进行语法检查、对修改后的数据进行验证,进一步提高数据修改的准确性。
附图说明
图1为本发明基于SQL语句的数据修改方法较佳实施例的流程图;
图2为本发明电子装置较佳实施例的示意图;
图3为图2中基于SQL语句的数据修改程序的程序模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1所示,为本发明基于SQL语句的数据修改方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在基于SQL语句的数据修改方法的第一实施例中,该方法可以包括步骤 S1-S4。
S1、接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则分析所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据。
上述第一SQL语句的具体信息包括:语句类型、待修改字段、待修改字段所在源表的表名称、待修改字段在源表中的位置及目标数据。
需要说明的是,SQL语句通常是固定格式的。在本实施例中,所述“根据预设分析规则分析所述第一SQL语句的标的信息”的步骤包括:
对所述第一SQL语句进行划分,得到所述第一SQL语句的关键词集合;
从所述关键词集合中提取第一类关键词,确定该第一SQL语句的语句类型;
从所述关键词集合中提取第二类关键词,确定该第一SQL语句的待修改字段及所述待修改字段的位置信息;及
从所述关键词集合中提取第三类关键词,确定该第一SQL语句对应的目标数据。
上述第一SQL语句可以举例为:update table_a set aa=‘90’where rowid=’001’,根据第一SQL语句中的空格对第一SQL语句进行划分,得到该第一SQL语句的关键词集合。
将关键词集合中每个关键词与预设的第一关键词集合进行匹配,从关键词集合中提取出与第一关键词集合中的第一关键词匹配的第一类关键词,确定第一SQL语句的语句类型。例如,update表示更新/修改类型。
上述第一关键词集合中的第一关键词用于表征语句类型,该集合中包括 update、select(表示查询类型)、create(表示创建类型)、delete(表示删除类型)、insert(表示插入类型)等。
上述第二类关键词为第一SQL语句中涉及的源表名、待修改字段在源表中的位置及待修改字段,例如,通过待修改字段所在的源表名“table_a”及行记录id“rowid=’001’”确定待修改字段“aa”在table_a中的位置。
上述第三类关键词为第一SQL语句中包含的目标数据,即,将待修改字段更新/修改为新的数据。例如,“set aa=‘90’”中的‘90’。
通过对上述第一SQL语句进行语义分析,得到的结果为将表名称为 table_a的源表中行记录id为001的字段aa更新为90。
S2、基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL 语句。
S3、执行所述第二SQL语句,为所述源表创建备份表。
需要说明的是,第二SQL语句包括查询原始数据及生成备份表两部分。其实际上是把包含待修改数据的源表做一个备份,避免出现源表更新/修改出错后无法回溯的情况。
在本实施例中,所述“为所述源表创建备份表”的步骤包括:
创建一张新表,从所述第一SQL语句的具体信息中获取所述源表的表名称及当前日期,根据预设的命名规则,确定所述新表的表名称;
获取所述源表中的原始数据,并基于所述新表的表名称和所述原始数据生成备份表。
首先,需生成创建语句,例如,Create table_xx,利用该创建语句,创建一张没有内容的新表。创建语句中的“xx”表示新表的表名称,其根据源表的表名称及预设命名规则确定。
在本实施例中,所述预设的命名规则为:源表的表名称+back+系统日期。例如,创建的新表的表名称为table_a back 20180423。也就是说,利用创建语句Create table_table_a back 20180423创建了一张表名称为table_table_a back 20180423的新表。
接下来,需要确定新表的表数据。根据第一SQL语句的具体信息中源表的表名称,生成查询语句,例如,select*from table_a,利用该查询语句从源表中查询该源表的原始数据。
查询到原始数据后,需将查询到的原始数据插入至创建的新表中,以得到源表的备份表。上述步骤利用第二SQL语句实现的,例如,第二SQL语句为:Create table table_a_back20180423as select*from table_a。在其他实施例中,所述步骤S2还包括:
基于所述备份表生成第三SQL语句,并执行所述第三SQL语句。
执行上述第二SQL语句将插入了源表的原始数据的新表生成备份表之后,还需对备份表进行保存。当执行该第三SQL语句时,执行将备份表传送至预设存储区域进行归档存储的操作。
S4、执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表。
根据待修改字段的位置从所述源表中提取出待修改字段对应的原始数据,将提取出的待修改字段对应的原始数据与待修改字段对应的目标数据进行关联,在源表中将提取出的待修改字段对应的原始数据修改成目标数据,实现基于SQL语句的数据修改。
需要说明的是,在依次执行第二SQL语句、第三SQL语句、第一SQL 语句的过程中,执行所述第二SQL语句、第三SQL语句、第一SQL语句出现错误,例如,第二SQL语句、第三SQL语句执行通过但第一SQL语句执行失败,或者,第二SQL语句执行通过但第三SQL语句执行失败,或者,第二SQL语句执行失败,均会导致语句执行出现错误。上述几种情况下,可将流程进行回滚,重新依次执行所述第二SQL语句、第三SQL语句、第一SQL 语句,直至所有SQL语句全部执行通过为止。通过建立回滚机制,保证数据修改过程顺利执行,提高数据修改的准确性。
上述实施例提出的基于SQL语句的数据修改方法,在接收到携带第一 SQL语句的数据修改请求后,自动生成备份语句对源表进行备份,然后执行数据修改操作,避免人为错误,提高数据修改的效率及准确性。
在基于SQL语句的数据修改方法的第二实施例中,该方法还可以包括步骤S5-S6。
S5、分别获取所述目标数据表及所述备份表的表数据,根据预设比对规则对所述目标数据表及所述备份表的表数据进行对比,生成对比报告,并根据所述对比报告判断数据修改是否准确。
在本实施例中,步骤S5包括以下细化步骤:
S51、分别统计所述目标数据表及所述备份表的表数据的数据总量,判断所述目标数据表及所述备份表中表数据的数据总量是否一致;
可以理解的是,在执行数据修改操作后,table_a中表数据的数据总量理应保持不变,变化的只有待更新字段aa的值。如上述示例,表名称为table_a 的源表在数据修改后字段aa的值变成90,除此之外没有其他变化。
S52、依次获取并对比所述目标数据表及所述备份表的表数据中的每个字段,判断所述目标数据表中是否存在异常字段;
上述异常字段表示应变更却未变更、不应变更却变更的字段。例如,当待修改字段未发生变更,或者,当非待修改字段发生变更时,判断存在异常字段。
在对目标数据表及备份表的表数据中的每个字段进行比较的过程中,首先确定两张表中不一致的字段;然后判断所述不一致的字段中,哪些属于待修改字段,哪些属于非带修改字段;对于待修改字段,判断待修改字段是否修改为第一SQL语句中的目标数据,若是,则判断不是异常字段,否则,判断为异常字段;对于非待修改字段,直接判断为异常字段。
出现异常字段的原因很多,例如,对于本应更新的字段,由于数据不完整或其他原因导致没有得到更新。
例如,在填写公司地址的时候,由于地址信息没有进行统一规范,可能会得到表“aaa”中的如下数据:编号001对应的公司地址为深圳市南山科技园、编号002对应的公司地址为广东省深圳市南山区、编号003对应的公司地址为深圳市南山区科技园。
为了将公司地址规范化,利用SQL语句将公司地址统一更新为“广东省深圳市南山区”,比如,第一SQL语句可能为:update table aaa set address='广东省深圳市南山区'where address like'%南山区%'。然而,这样只会对编号002、 003对应的公司地址进行更新,而实际业务上,编号001对应的公司地址也属于更新范畴,则编号001对应的公司地址字段属于应更新却未更新字段,即,异常字段。
基于数据总量和字段对比结果生成对比报告,对比报告中包含:目标数据表与备份表中表数据的数据总量、一致的字段、不一致的字段,并对异常字段进行高亮标注。
S53、当所述目标数据表及所述备份表中表数据的数据总量一致,且所述目标数据表中不存在异常字段时,判断数据修改准确;否则,判断数据修改不准确。
通过数据总量及字段两个方面来判断数据修改结果是否准确,首先针对目标数据表及备份表进行粗略比较,比较数据总量是否一致,若更新后的表数据的数据总量与备份表表数据的数据总量不一致,说明数据修改可能发生错误,基于数据总量生成预警信息提示用户。然后针对表数据中每一个字段进行详细比较,也就是说,循环获取每张表中每条记录,对比每条记录中的每个字段是否一致,若不一致,说明该字段发生了变更。
当比对报告中不存在应变更但未变更,或者,不应变更却发生变更的字段时,判断数据修改正确,否则,判断数据修改错误。
S6、当数据修改准确时,保存所述目标数据表;当数据修改不准确时,基于所述对比结果生成预警信息,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯。
当判断数据修改错误时,基于所述对比报告生成提示信息反馈给用户。
在其他实施例中,所述对比报告中还包括:对异常字段的智能处理方案。用户可根据所述智能处理方案对异常字段进行相应处理,例如,一键处理,或者一键放弃。
以上述公司地址为例,对于异常字段“深圳市南山科技园”,根据智能分词匹配器(如jieba分词器)识别出该字段数据为应变更却未变更的异常字段,将该异常字段挑选出来,并生成将该异常字段变更为目标数据“广东省深圳市南山区”的智能处理方案。
用户在收到智能处理方案后,可以根据实际情况,选择一键处理,或者一键放弃。当用户选择一键处理时,自动生成SQL语句,执行该SQL语句对上述异常字段进行更新处理,并将处理结果展示在界面上供用户查看。
对于被判断为不应变更却发生变更的异常字段,用户也可以根据实际情况选择一键处理或一键放弃。
用户查看对比报告后,认为选择一键处理或一键放弃无法解决问题时,用户可根据所述备份表的表数据对所述目标数据表的表数据进行回溯,流程返回步骤S3。在回溯过程中,根据第一SQL语句update table_a set aa=‘90’ where rowid=’001’识别出备份表的表名称table_a back 20180423。
上述实施例提出的基于SQL语句的数据修改方法,通过对修改后的数据进行验证,提高数据修改的准确性。
为了保证数据修改顺利进行,在执行第一SQL语句、第二SQL语句、第三SQL语句前,对第一/第二/第三SQL语句进行语法检查。在基于SQL语句的修改方法的第三实施例中,该方法在执行第一/第二/第三SQL语句之前还包括:
利用预设的语法检查规则,对所述第一/第二/第三SQL语句的语法进行检查;及
当检查结果为存在语法错误时,基于检查结果及修改建议生成提示信息反馈给预设终端。
预设终端为系统运营人员使用的终端设备,用于接收系统反馈的提示信息。
可以在执行第一/第二/第三SQL语句之前,自动进行语法检查,也可以在接收到用户发出的语法检查请求时,对第一/第二/第三SQL语句进行语法检查,并将第一/第二/第三SQL语句及检查结果进行展示。
以第二SQL语句(备份语句)为例,按照SQL server语法,对应的备份语句为:select*into DataTable_20150717from DataTable。若按照oracle备份语法,对应的备份语句为create table table_a_back 20180423as select*from table_a。
假设系统运营人员选择的是SQL server,当备份语句中含有Create tabletable_a_back 20180423as这种情况,系统在语法检查时会发现该语法错误。假设系统运营人员选择的是oracle数据库,当备份语句中含有Create table table_a_back 20180423as这种情况,系统在语法检查时会判断无语法错误。
根据语法错误的内容给出修改建议,基于语句、检查结果、修改建议生成预警信息,并将该提示信息反馈给系统运营人员,供用户参照修改。接收到系统运营人员修改后的第一/第二/第三SQL语句,继续执行修改后第一/第二/第三SQL语句。
若检测没有发现语法错误,则继续执行第一/第二/第三SQL语句。
上述实施里提出的基于SQL语句的数据修改方法,通过在执行SQL语句前对SQL语句进行语法检查,提高数据修改的准确性。
在其他实施例中,步骤S1包括:
接收用户提出的数据修改请求,当所述数据修改请求中携带多条所述第一SQL语句时,生成SQL语句队列;及
依次提取所述SQL语句队列中的所述第一SQL语句,并根据预设分析规则分析所述第一SQL语句的标的信息。
当接收到用户提交的多条第一SQL语句时,生成第一SQL语句的队列,将队列划分为多个部分,例如,每一部分包括10条第一SQL语句,遵循先进先出的原则,依次针对每一部分的每一条第一SQL语句执行分析步骤。
上述实施例提出的基于SQL语句的数据修改方法,通过构建构建排队机制,生成SQL语句队列,使各第一SQL语句之间互不干扰,保证数据的正确性。
参照图2所示,为本发明电子装置1较佳实施例的示意图。
在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、便携计算机、桌上型计算机等具有数据处理功能的终端设备,所述服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器。
该电子装置1包括存储器11、处理器12,及网络接口13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是所述电子装置1 的内部存储单元,例如该电子装置1的硬盘。存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如该电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD) 卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括该电子装置 1的内部存储单元也包括外部存储设备。
存储器11不仅可以用于存储安装于该电子装置1的应用软件及各类数据,例如基于SQL语句的数据修改程序10等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器 11中存储的程序代码或处理数据,例如基于SQL语句的数据修改程序10等。
网络接口13可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子装置1与其他电子设备之间建立通信连接。
图2仅示出了具有组件11-13的电子装置1,本领域技术人员可以理解的是,图2示出的结构并不构成对电子装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
可选地,该电子装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。
可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED) 触摸器等。其中,显示器也可以称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。
在图2所示的电子装置1实施例中,作为一种计算机存储介质的存储器 11中存储基于SQL语句的数据修改程序10的程序代码,处理器12执行基于 SQL语句的数据修改程序10的程序代码时,实现如下步骤:
A1、接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则分析所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据。
上述第一SQL语句的具体信息包括:语句类型、待修改字段、待修改字段所在源表的表名称、待修改字段在源表中的位置及目标数据。
需要说明的是,SQL语句通常是固定格式的。在本实施例中,A1中的所述“根据预设分析规则分析所述第一SQL语句的具体信息”包括:
对所述第一SQL语句进行划分,得到所述第一SQL语句的关键词集合;
从所述关键词集合中提取第一类关键词,确定该第一SQL语句的语句类型;
从所述关键词集合中提取第二类关键词,确定该第一SQL语句的待修改字段及所述待修改字段的位置信息;及
从所述关键词集合中提取第三类关键词,确定该第一SQL语句对应的目标数据。
上述第一SQL语句可以举例为:update table_a set aa=‘90’where rowid=’001’,根据第一SQL语句中的空格对第一SQL语句进行划分,得到该第一SQL语句的关键词集合。
将关键词集合中每个关键词与预设的第一关键词集合进行匹配,从关键词集合中提取出与第一关键词集合中的第一关键词匹配的第一类关键词,确定第一SQL语句的语句类型。例如,update表示更新/修改类型。
上述第一关键词集合中的第一关键词用于表征语句类型,该集合中包括update、select(表示查询类型)、create(表示创建类型)、delete(表示删除类型)、insert(表示插入类型)等。
上述第二类关键词为第一SQL语句中涉及的源表名、待修改字段在源表中的位置及待修改字段,例如,通过待修改字段所在的源表名“table_a”及行记录id“rowid=’001’”确定待修改字段“aa”在table_a中的位置。
上述第三类关键词为第一SQL语句中包含的目标数据,即,将待修改字段更新/修改为新的数据。例如,“set aa=‘90’”中的‘90’。
通过对上述第一SQL语句进行语义分析,得到的结果为将表名称为 table_a的源表中行记录id为001的字段aa更新为90。
A2、基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL 语句。
A3、执行所述第二SQL语句,为所述源表创建备份表。
需要说明的是,第二SQL语句包括查询原始数据及生成备份表两部分。其实际上是把包含待修改数据的源表做一个备份,避免出现源表更新/修改出错后无法回溯的情况。
在本实施例中,所述“为所述源表创建备份表”的步骤包括:
创建一张新表,从所述第一SQL语句的具体信息中获取所述源表的表名称及当前日期,根据预设的命名规则,确定所述新表的表名称;
获取所述源表中的原始数据,并基于所述新表的表名称和所述原始数据生成备份表。
首先,需生成创建语句,例如,Create table_xx,利用该创建语句,创建一张没有内容的新表。创建语句中的“xx”表示新表的表名称,其根据源表的表名称及预设命名规则确定。
在本实施例中,所述预设的命名规则为:源表的表名称+back+系统日期。例如,创建的新表的表名称为table_a back 20180423。也就是说,利用创建语句Create table_table_a back 20180423创建了一张表名称为table_table_a back 20180423的新表。
接下来,需要确定新表的表数据。根据第一SQL语句的具体信息中源表的表名称,生成查询语句,例如,select*from table_a,利用该查询语句从源表中查询该源表的原始数据。
查询到原始数据后,需将查询到的原始数据插入至创建的新表中,以得到源表的备份表。上述步骤利用第二SQL语句实现的,例如,第二SQL语句为:Create table table_a_back20180423as select*from table_a。在其他实施例中,所述步骤A2还包括:
基于所述备份表生成第三SQL语句,并执行所述第三SQL语句。
执行上述第二SQL语句将插入了源表的原始数据的新表生成备份表之后,还需对备份表进行保存。当执行该第三SQL语句时,执行将备份表传送至预设存储区域进行归档存储的操作。
A4、执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表。
根据待修改字段的位置从所述源表中提取出待修改字段对应的原始数据,将提取出的待修改字段对应的原始数据与待修改字段对应的目标数据进行关联,在源表中将提取出的待修改字段对应的原始数据修改成目标数据,实现基于SQL语句的数据修改。
需要说明的是,在依次执行第二SQL语句、第三SQL语句、第一SQL 语句的过程中,执行所述第二SQL语句、第三SQL语句、第一SQL语句出现错误,例如,第二SQL语句、第三SQL语句执行通过但第一SQL语句执行失败,或者,第二SQL语句执行通过但第三SQL语句执行失败,或者,第二SQL语句执行失败,均会导致语句执行出现错误。上述几种情况下,可将流程进行回滚,重新依次执行所述第二SQL语句、第三SQL语句、第一SQL 语句,直至所有SQL语句全部执行通过为止。通过建立回滚机制,保证数据修改过程顺利执行,提高数据修改的准确性。
上述实施例提出的电子装置1,在接收到携带第一SQL语句的数据修改请求后,自动生成备份语句对源表进行备份,然后执行数据修改操作,避免人为错误,提高数据修改的效率及准确性。
在其他实施例中,处理器12执行基于SQL语句的数据修改程序10的程序代码时,还实现步骤A5-A6。
A5、分别获取所述目标数据表及所述备份表的表数据,根据预设比对规则对所述目标数据表及所述备份表的表数据进行对比,生成对比报告,并根据所述对比报告判断数据修改是否准确。
在本实施例中,步骤A5包括以下细化步骤:
A51、分别统计所述目标数据表及所述备份表的表数据的数据总量,判断所述目标数据表及所述备份表中表数据的数据总量是否一致;
可以理解的是,在执行数据修改操作后,table_a中表数据的数据总量理应保持不变,变化的只有待更新字段aa的值。如上述示例,表名称为table_a 的源表在数据修改后字段aa的值变成90,除此之外没有其他变化。
A52、依次获取并对比所述目标数据表及所述备份表的表数据中的每个字段,判断所述目标数据表中是否存在异常字段;
上述异常字段表示应变更却未变更、不应变更却变更的字段。例如,当待修改字段未发生变更,或者,当非待修改字段发生变更时,判断存在异常字段。
在对目标数据表及备份表的表数据中的每个字段进行比较的过程中,首先确定两张表中不一致的字段;然后判断所述不一致的字段中,哪些属于待修改字段,哪些属于非带修改字段;对于待修改字段,判断待修改字段是否修改为第一SQL语句中的目标数据,若是,则判断不是异常字段,否则,判断为异常字段;对于非待修改字段,直接判断为异常字段。
出现异常字段的原因很多,例如,对于本应更新的字段,由于数据不完整或其他原因导致没有得到更新。
例如,在填写公司地址的时候,由于地址信息没有进行统一规范,可能会得到表“aaa”中的如下数据:编号001对应的公司地址为深圳市南山科技园、编号002对应的公司地址为广东省深圳市南山区、编号003对应的公司地址为深圳市南山区科技园。
为了将公司地址规范化,利用SQL语句将公司地址统一更新为“广东省深圳市南山区”,比如,第一SQL语句可能为:update table aaa set address='广东省深圳市南山区'where address like'%南山区%'。然而,这样只会对编号002、 003对应的公司地址进行更新,而实际业务上,编号001对应的公司地址也属于更新范畴,则编号001对应的公司地址字段属于应更新却未更新字段,即,异常字段。
基于数据总量和字段对比结果生成对比报告,对比报告中包含:目标数据表与备份表中表数据的数据总量、一致的字段、不一致的字段,并对异常字段进行高亮标注。
A53、当所述目标数据表及所述备份表中表数据的数据总量一致,且所述目标数据表中不存在异常字段时,判断数据修改准确;否则,判断数据修改不准确。
通过数据总量及字段两个方面来判断数据修改结果是否准确,首先针对目标数据表及备份表进行粗略比较,比较数据总量是否一致,若更新后的表数据的数据总量与备份表表数据的数据总量不一致,说明数据修改可能发生错误,基于数据总量生成预警信息提示用户。然后针对表数据中每一个字段进行详细比较,也就是说,循环获取每张表中每条记录,对比每条记录中的每个字段是否一致,若不一致,说明该字段发生了变更。
当比对报告中不存在应变更但未变更,或者,不应变更却发生变更的字段时,判断数据修改正确,否则,判断数据修改错误。
A6、当数据修改准确时,保存所述目标数据表;当数据修改不准确时,基于所述对比结果生成预警信息,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯。
当判断数据修改错误时,基于所述对比报告生成提示信息反馈给用户。
在其他实施例中,所述对比报告中还包括:对异常字段的智能处理方案。用户可根据所述智能处理方案对异常字段进行相应处理,例如,一键处理,或者一键放弃。
以上述公司地址为例,对于异常字段“深圳市南山科技园”,根据智能分词匹配器(如jieba分词器)识别出该字段数据为应变更却未变更的异常字段,将该异常字段挑选出来,并生成将该异常字段变更为目标数据“广东省深圳市南山区”的智能处理方案。
用户在收到智能处理方案后,可以根据实际情况,选择一键处理,或者一键放弃。当用户选择一键处理时,自动生成SQL语句,执行该SQL语句对上述异常字段进行更新处理,并将处理结果展示在界面上供用户查看。
对于被判断为不应变更却发生变更的异常字段,用户也可以根据实际情况选择一键处理或一键放弃。
用户查看对比报告后,认为选择一键处理或一键放弃无法解决问题时,用户可根据所述备份表的表数据对所述目标数据表的表数据进行回溯,流程返回步骤A3。在回溯过程中,根据第一SQL语句update table_a set aa=‘90’ where rowid=’001’识别出备份表的表名称table_a back 20180423。
上述实施例提出的电子装置1,通过对修改后的数据进行验证,提高数据修改的准确性。
在其他实施例中,步骤A1可以包括:
接收用户提出的数据修改请求,当所述数据修改请求中携带多条所述第一SQL语句时,生成SQL语句队列;及
依次提取所述SQL语句队列中的所述第一SQL语句,并根据预设分析规则分析所述第一SQL语句的标的信息。
当接收到用户提交的多条第一SQL语句时,生成第一SQL语句的队列,将队列划分为多个部分,例如,每一部分包括10条第一SQL语句,遵循先进先出的原则,依次针对每一部分的每一条第一SQL语句执行分析步骤。
上述实施例提出的电子装置1,通过构建构建排队机制,生成SQL语句队列,使各第一SQL语句之间互不干扰,保证数据的正确性。
可选地,在其他的实施例中,基于SQL语句的数据修改程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。例如,参照图3 所示,为图2中基于SQL语句的数据修改程序10的模块示意图。
在基于SQL语句的数据修改程序10的第一实施例中,该程序可以只包括模块110-140。所述模块110-140所实现的功能或操作步骤均与上述实施例类似,此处不再详述,示例性地,例如其中:
分析模块110,用于接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则分析所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据;;
语句生成模块模块120,用于基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL语句;
备份模块130,用于执行所述第二SQL语句,为所述源表创建备份表;及
数据修改模块140,用于执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表。
在基于SQL语句的数据修改程序10的第二实施例中,该程序还可以包括模块150-160。所述模块150-160所实现的功能或操作步骤均与上述实施例类似,此处不再详述,示例性地,例如其中:
对比模块150,用于分别获取所述目标数据表及所述备份表的表数据,根据预设比对规则对所述目标数据表及所述备份表的表数据进行对比,生成对比报告,并根据所述对比报告判断数据修改是否准确;
反馈模块160,用于当数据修改准确时,保存所述目标数据表;当数据修改不准确时,基于所述对比结果生成预警信息,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括基于SQL语句的数据修改程序10,所述基于SQL语句的数据修改程序10被处理器执行时实现如上所述基于SQL语句的数据修改方法中的任意步骤。
本发明之计算机可读存储介质的具体实施方式与上述基于SQL语句的数据修改方法的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于SQL语句的数据修改方法,应用于电子装置,其特征在于,所述方法包括:
S1、接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则对所述第一SQL语句的关键词集合进行预设类别的关键词提取,得到所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据;
S2、基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL语句;
S3、执行所述第二SQL语句,为所述源表创建备份表,基于所述备份表生成第三SQL语句,执行所述第三SQL语句,对所述备份表进行归档;及
S4、执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表;
及,若在执行所述第二SQL语句、第三SQL语句、第一SQL语句的过程中出现错误,则依次对所述第二SQL语句、所述第三SQL语句、所述第一SQL语句建立回滚机制,基于所述回滚机制重新依次执行所述第二SQL语句、第三SQL语句、第一SQL语句直至所有SQL语句全部执行通过。
2.根据权利要求1所述的基于SQL语句的数据修改方法,其特征在于,该方法还包括:
S5、分别获取所述目标数据表及所述备份表的表数据,根据预设比对规则对所述目标数据表及所述备份表的表数据进行对比,生成对比报告,并根据所述对比报告判断数据修改是否准确;及
S6、当数据修改准确时,保存所述目标数据表;当数据修改不准确时,基于所述对比结果生成预警信息,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯。
3.根据权利要求2所述的基于SQL语句的数据修改方法,其特征在于,所述步骤S5包括:
分别统计所述目标数据表及所述备份表的表数据的数据总量,判断所述目标数据表及所述备份表中表数据的数据总量是否一致;
依次获取并对比所述目标数据表及所述备份表的表数据中的每个字段,判断所述目标数据表中是否存在异常字段;及
当所述目标数据表及所述备份表中表数据的数据总量一致,且所述目标数据表中不存在异常字段时,判断数据修改准确;否则,判断数据修改不准确。
4.根据权利要求1至3中任意一项所述的基于SQL语句的数据修改方法,其特征在于,所述根据预设分析规则对所述第一SQL语句的关键词集合进行预设类别的关键词提取,得到所述第一SQL语句的标的信息,包括:
对所述第一SQL语句进行划分,得到所述第一SQL语句的关键词集合;
从所述关键词集合中提取第一类关键词,确定该第一SQL语句的语句类型;
从所述关键词集合中提取第二类关键词,确定该第一SQL语句的待修改字段及所述待修改字段的位置信息;及
从所述关键词集合中提取第三类关键词,确定该第一SQL语句对应的目标数据。
5.根据权利要求4所述的基于SQL语句的数据修改方法,其特征在于,该方法还包括:
利用预设的语法检查规则,对所述第一SQL语句、第二SQL语句、第三SQL语句的语法进行检查;及
当检查结果为存在语法错误时,基于检查结果及修改建议生成提示信息反馈给预设终端。
6.根据权利要求5所述的基于SQL语句的数据修改方法,其特征在于,所述步骤S1包括:
接收用户提出的数据修改请求,当所述数据修改请求中携带多条所述第一SQL语句时,生成SQL语句队列;及
依次提取所述SQL语句队列中的所述第一SQL语句,并根据预设分析规则分析所述第一SQL语句的标的信息。
7.一种电子装置,其特征在于,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的基于SQL语句的数据修改程序,所述基于SQL语句的数据修改程序被所述处理器执行时,可实现如下步骤:
A1、接收用户提出的携带第一SQL语句的数据修改请求,根据预设分析规则对所述第一SQL语句的关键词集合进行预设类别的关键词提取,得到所述第一SQL语句的标的信息,所述标的信息包括:源表的表名称、待修改字段、目标数据;
A2、基于所述源表的表名称,生成用于创建所述源表的备份表的第二SQL语句;
A3、执行所述第二SQL语句,为所述源表创建备份表,基于所述备份表生成第三SQL语句,执行所述第三SQL语句,对所述备份表进行归档;及
A4、执行所述第一SQL语句,将所述源表中的待修改字段修改为所述目标数据,得到目标数据表;
及,若在执行所述第二SQL语句、第三SQL语句、第一SQL语句的过程中出现错误,则依次对所述第二SQL语句、所述第三SQL语句、所述第一SQL语句建立回滚机制,基于所述回滚机制重新依次执行所述第二SQL语句、第三SQL语句、第一SQL语句直至所有SQL语句全部执行通过。
8.根据权利要求7所述的电子装置,其特征在于,所述基于SQL语句的数据修改程序被所述处理器执行时,还实现如下步骤:
A5、分别获取所述目标数据表及所述备份表的表数据,根据预设比对规则对所述目标数据表及所述备份表的表数据进行对比,生成对比报告,并根据所述对比报告判断数据修改是否准确;及
A6、当数据修改准确时,保存所述目标数据表;当数据修改不准确时,基于所述对比结果生成预警信息,并根据所述备份表的表数据对所述目标数据表的表数据进行回溯。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括基于SQL语句的数据修改程序,所述基于SQL语句的数据修改程序被处理器执行时,可实现如权利要求1至6中任意一项所述的基于SQL语句的数据修改方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811114708.4A CN109471857B (zh) | 2018-09-25 | 2018-09-25 | 基于sql语句的数据修改方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811114708.4A CN109471857B (zh) | 2018-09-25 | 2018-09-25 | 基于sql语句的数据修改方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471857A CN109471857A (zh) | 2019-03-15 |
CN109471857B true CN109471857B (zh) | 2023-07-25 |
Family
ID=65663099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811114708.4A Active CN109471857B (zh) | 2018-09-25 | 2018-09-25 | 基于sql语句的数据修改方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471857B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767340B (zh) * | 2020-05-29 | 2024-01-05 | 中国工商银行股份有限公司 | 数据处理方法、装置、电子设备和介质 |
CN111737227B (zh) * | 2020-06-22 | 2024-04-02 | 平安健康保险股份有限公司 | 数据修改方法及系统 |
CN112948400B (zh) * | 2020-09-17 | 2024-07-19 | 深圳市明源云科技有限公司 | 一种数据库管理方法、数据库管理装置及终端设备 |
CN112364025B (zh) * | 2020-11-30 | 2023-09-22 | 中国银行股份有限公司 | 数据处理的方法及装置、电子设备及计算机可读存储介质 |
CN112685077A (zh) * | 2020-12-29 | 2021-04-20 | 平安普惠企业管理有限公司 | 数据修改方法、系统、计算机设备及计算机可读存储介质 |
CN112765156B (zh) * | 2020-12-29 | 2024-08-13 | 中国人寿保险股份有限公司上海数据中心 | 一种基于数据修改规则的数据修改方法、系统和存储介质 |
CN112765158A (zh) * | 2020-12-30 | 2021-05-07 | 中国人寿保险股份有限公司上海数据中心 | 一种数据库的数据修改方法、装置及存储介质 |
CN112948181A (zh) * | 2021-03-22 | 2021-06-11 | 深圳闪回科技有限公司 | 一套数据修改备份恢复系统 |
CN112883014A (zh) * | 2021-03-25 | 2021-06-01 | 上海众源网络有限公司 | 数据回溯方法、装置、计算机设备和存储介质 |
CN113254470B (zh) * | 2021-05-28 | 2023-06-02 | 武汉悦学帮网络技术有限公司 | 一种数据更改方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
CN106294776A (zh) * | 2016-08-12 | 2017-01-04 | 北京东方车云信息技术有限公司 | 一种数据处理方法及装置 |
CN107193821A (zh) * | 2016-03-14 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 监控方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9977798B2 (en) * | 2015-07-20 | 2018-05-22 | International Business Machines Corporation | Data migration and table manipulation in a database management system |
-
2018
- 2018-09-25 CN CN201811114708.4A patent/CN109471857B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN107193821A (zh) * | 2016-03-14 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 监控方法和系统 |
CN106294776A (zh) * | 2016-08-12 | 2017-01-04 | 北京东方车云信息技术有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109471857A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471857B (zh) | 基于sql语句的数据修改方法、装置及存储介质 | |
CN110019486B (zh) | 数据采集方法、装置、设备及存储介质 | |
CN109947789B (zh) | 一种多数据库的数据处理的方法、装置、计算机设备及存储介质 | |
KR102171220B1 (ko) | 클레임 서류의 문자 인식 방법, 장치, 서버 및 저장매체 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
WO2020186786A1 (zh) | 文件处理方法、装置、计算机设备和存储介质 | |
WO2021151270A1 (zh) | 图像结构化数据提取方法、装置、设备及存储介质 | |
WO2019085474A1 (zh) | 计算引擎实现方法、电子装置及存储介质 | |
US20190325021A1 (en) | Method and Device for Creating Hyperlink | |
CN112559354A (zh) | 前端代码规范检测方法、装置、计算机设备及存储介质 | |
CN110457346B (zh) | 数据查询方法、装置及计算机可读存储介质 | |
WO2019056793A1 (zh) | 简历识别装置、方法及计算机可读存储介质 | |
CN108427637B (zh) | 测试案例推荐方法、电子装置及可读存储介质 | |
CN109190062B (zh) | 目标语料数据的爬取方法、装置及存储介质 | |
CN111881183B (zh) | 企业名称匹配方法和装置、以及存储介质和电子设备 | |
CN117851575B (zh) | 一种大语言模型问答优化方法、装置、电子设备及存储介质 | |
CN110688315A (zh) | 接口代码检测报告生成方法、电子装置及存储介质 | |
CN110737689A (zh) | 数据标准符合性检测方法、装置、系统及存储介质 | |
US20140075299A1 (en) | Systems and methods for generating extraction models | |
CN112181835A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN111553556A (zh) | 业务数据分析方法、装置、计算机设备及存储介质 | |
CN111143556A (zh) | 软件功能点自动计数方法、装置、介质及电子设备 | |
CN110263121B (zh) | 表格数据处理方法、装置、电子装置及计算机可读存储介质 | |
CN112363814A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN113609128B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |