将文件中的SQL语句与存储在数据库中的SQL语句进行比较

时间:2017-01-26 05:26:56

标签: sql perl oracle11g

我正在解析来自SQL文件的语句(基于分号),通过DBI执行它们,并将成功执行的语句存储到Oracle数据库中,并且成功"状态。

如果由于语法错误而在执行SQL文件时出现错误,我将停止我的Perl脚本并更正错误。当我重新启动Perl脚本时,我需要将文件中的语句与标记为成功的数据库中的语句进行比较。

如果一个语句已经存在于数据库中,我将不再执行它;我会跳过它。但如果不存在,那么我将从上次失败的那个陈述开始执行。

比较它们的最佳方法是什么?我试图获取存储在数据库中的语句,但我无法获得整个语句。

如何将大SQL语句转换为字符串并将其存储在数据库中,以便我可以使用eq运算符对它们进行比较?

1 个答案:

答案 0 :(得分:0)

我建议这样的事情

  • 读取您的文件并将其拆分为分号

  • prepare文件中的每个语句并将语句推送到数组

  • 如果任何语句无法解析,则报告并放弃处理

  • 开始交易

  • execute每个语句依次来自数组

  • 如果任何语句未能执行,则报告,回滚事务并放弃处理

  • 提交交易并终止