我正在解析来自SQL文件的语句(基于分号),通过DBI
执行它们,并将成功执行的语句存储到Oracle数据库中,并且成功"状态。
如果由于语法错误而在执行SQL文件时出现错误,我将停止我的Perl脚本并更正错误。当我重新启动Perl脚本时,我需要将文件中的语句与标记为成功的数据库中的语句进行比较。
如果一个语句已经存在于数据库中,我将不再执行它;我会跳过它。但如果不存在,那么我将从上次失败的那个陈述开始执行。
比较它们的最佳方法是什么?我试图获取存储在数据库中的语句,但我无法获得整个语句。
如何将大SQL语句转换为字符串并将其存储在数据库中,以便我可以使用eq
运算符对它们进行比较?
答案 0 :(得分:0)
我建议这样的事情
读取您的文件并将其拆分为分号
prepare
文件中的每个语句并将语句推送到数组
如果任何语句无法解析,则报告并放弃处理
开始交易
execute
每个语句依次来自数组
如果任何语句未能执行,则报告,回滚事务并放弃处理
提交交易并终止