基于数据库存储过程生成DML的方法及装置与流程
- 国知局
- 2024-09-11 15:00:05
本技术涉及数据库,具体地涉及一种基于数据库存储过程生成dml的方法、一种基于数据库存储过程生成dml的装置、一种计算机可读存储介质以及一种计算机程序产品。
背景技术:
1、存储过程是一种在金融界广泛应用的批处理技术,常用于生成经营报表、生成个人风险报告等。oracle数据库在金融界的应用非常广泛,已经是事实上的标准数据库之一。在对存储过程进行信创改造时,需要将oracle存储过程中dml语句(包括insert、update、delete、merge、execute)分割出来,以便进一步处理为映射文件。据不完全统计,某金融机构的某部门就有百万行的oracle存储过程,信创改造工作量非常巨大。目前的做法是人工判读,通过人工逐行阅读存储过程文件,当遇到分号时则认定为sql语句结束;将语句复制出来放到临时文件,加工后填写到映射文件中。人工判读的困难在于:1)少量sql行数非常多,多达500+行,而标准配置下一屏幕是80行,无法在同一屏幕下进行展示,跨屏选择sql语句存在一定的操作困难;2)sql注释分为单行注释和多行注释,例如--标识、/*标识和*/标识;部分sql中的分号在sql注释中,可能会导致误判;3)映射文件中是有格式的,需单独识别出execute语句,放在规定的excel单元格中;而这增加了人工处理步骤。可见其效率和准确度均受到影响。
2、dml:data manipulation language,数据操作语言。
技术实现思路
1、本技术实施方式的目的是提供一种基于数据库存储过程生成dml的方法及装置,提供一种具有通用性且自动化的dml生成方法,以至少解决背景技术中的部分技术问题。
2、为了实现上述目的,本技术的第一方面提供了一种基于数据库存储过程生成dml的方法,包括:获取存储过程文件;对所述存储过程文件逐行进行如下处理:将所述存储过程文件中的一行放入字符串列表中,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,并放入新列表;组合所述新列表的所有字符串得到整体字符串,匹配所述整体字符串中的多行注释符号对,删除多行注释符号对以及该多行注释符号对中间的字符串,得到处理后字符串;根据语句结束符号分割所述处理后字符串为数组结构,选择以数据库操作指令为首字符串的数组;基于选择的数组生成sql语句。
3、可选地,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,包括:判断该行的首字符是否为单行注释符号;若首字符为单行注释符号,截取字符串为空;若首字符不为单行注释符号,判断该行中间是否存在单行注释符号;若该行中间不存在单行注释符号,截取字符串为该行全部字符串;若该行中间存在单行注释符号,判断该单行注释中是否存在语句结束符号;若该单行注释中不存在语句结束符号,截取字符串为该行全部字符串;若该单行注释中存在语句结束符号,截取字符串为该语句结束符号之前的全部字符串。
4、可选地,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,包括:判断所述字符串列表中是否存在单行注释符号;若不存在单行注释符号,截取字符串为该行全部字符串;若存在单行注释符号,判断单行注释符号在所述字符串列表中的位置;若单行注释符号在字符串列表的首部,则截取字符串为空;若单行注释符号在字符串列表的中间,判断该单行注释中是否存在语句结束符号;若该单行注释中不存在语句结束符号,截取字符串为该行全部字符串;若该单行注释中存在语句结束符号,截取字符串为该语句结束符号之前的全部字符串。
5、可选地,根据语句结束符号分割所述处理后字符串为数组结构,包括:按照语句结束符号分割所述处理后字符串,得到sql数组;对所述sql数组中的每一数组,按照单词分隔符分割所述sql数组得到对应的一个字符串数组。
6、可选地,选择以数据库操作指令为首字符串的数组,包括:判断数组的首字符串是否为数据库操作指令;如果是,则选择该数组对应的行保存至中间数据库中;如果不是,丢弃该数组对应的行。
7、可选地,所述方法还包括:基于用户选择的识别模式确定单行注释符号、多行注释符号对、语句结束符号的具体值;所述识别模式至少包括:自动模式,选择模式和输入模式;在自动模式下,采用预置的词法分析器和/或语法分析器识别所述存储过程文件所使用的编程语言,基于所述编程语言的类型确定单行注释符号、多行注释符号对、语句结束符号的具体值;在选择模式下,获取用户在语言列表中对编程语言的选择,基于用户选择的编程语言确定所述单行注释符号、多行注释符号对、语句结束符号的具体值;在输入模式下,获取用户输入的单行注释符号、多行注释符号对、语句结束符号的具体值。
8、在本技术中还提供了一种基于数据库存储过程生成dml的装置,该装置包括:文件获取模块,用于获取存储过程文件;单行处理模块,用于对所述存储过程文件逐行进行如下处理:将所述存储过程文件中的一行放入字符串列表中,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,并放入新列表;多行处理模块,用于组合所述新列表的所有字符串得到整体字符串,匹配所述整体字符串中的多行注释符号对,删除多行注释符号对以及该多行注释符号对中间的字符串,得到处理后字符串;以及语句生成模块,用于根据语句结束符号分割所述处理后字符串为数组结构,选择以数据库操作指令为首字符串的数组;基于选择的数组生成sql语句。
9、可选地,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,包括:判断该行的首字符是否为单行注释符号;若首字符为单行注释符号,截取字符串为空;若首字符不为单行注释符号,判断该行中间是否存在单行注释符号;若该行中间不存在单行注释符号,截取字符串为该行全部字符串;若该行中间存在单行注释符号,判断该单行注释中是否存在语句结束符号;若该单行注释中不存在语句结束符号,截取字符串为该行全部字符串;若该单行注释中存在语句结束符号,截取字符串为该语句结束符号之前的全部字符串。
10、可选地,基于所述字符串列表中的单行注释符号和语句结束符号从所述字符串列表截取字符串,包括:判断所述字符串列表中是否存在单行注释符号;若不存在单行注释符号,截取字符串为该行全部字符串;若存在单行注释符号,判断单行注释符号在所述字符串列表中的位置;若单行注释符号在字符串列表的首部,则截取字符串为空;若单行注释符号在字符串列表的中间,判断该单行注释中是否存在语句结束符号;若该单行注释中不存在语句结束符号,截取字符串为该行全部字符串;若该单行注释中存在语句结束符号,截取字符串为该语句结束符号之前的全部字符串。
11、可选地,根据语句结束符号分割所述处理后字符串为数组结构,包括:按照语句结束符号分割所述处理后字符串,得到sql数组;对所述sql数组中的每一数组,按照单词分隔符分割所述sql数组得到对应的一个字符串数组。
12、可选地,选择以数据库操作指令为首字符串的数组,包括:判断数组的首字符串是否为数据库操作指令;如果是,则选择该数组对应的行保存至中间数据库中;如果不是,丢弃该数组对应的行。
13、可选地,所述装置还包括符号确定模块,所述符号确定模块用于:基于用户选择的识别模式确定单行注释符号、多行注释符号对、语句结束符号的具体值;所述识别模式至少包括:自动模式,选择模式和输入模式;在自动模式下,采用预置的词法分析器和/或语法分析器识别所述存储过程文件所使用的编程语言,基于所述编程语言的类型确定单行注释符号、多行注释符号对、语句结束符号的具体值;在选择模式下,获取用户在语言列表中对编程语言的选择,基于用户选择的编程语言确定所述单行注释符号、多行注释符号对、语句结束符号的具体值;在输入模式下,获取用户输入的单行注释符号、多行注释符号对、语句结束符号的具体值。
14、在本技术中还提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述的基于数据库存储过程生成dml的方法的步骤。
15、在本技术中还提供了一种计算机可读存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行前述的基于数据库存储过程生成dml的方法的步骤。
16、在本技术中还提供一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现前述的基于数据库存储过程生成dml的方法。
17、上述技术方案至少具有以下有益效果:
18、(1)极大地提升了dml语句的分割效率。例如,人工分割一个500行的sql文件需要5分钟,通过本技术中的方法进行自动化处理,实现了秒级处理。
19、(2)提升了分割存储过程的准确率。
20、本技术实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。
本文地址:https://www.jishuxx.com/zhuanli/20240911/292821.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。