2011-04-30 92 views
1

我的程序从SQL文件恢复MySQL数据库。如果我想在程序中显示SQL执行的进度,我需要知道文件中SQL语句的数量。我如何在MySQL中执行此操作? (这些查询可能由mysql特定的多行插入语句组成)如何统计文本文件中的SQL语句数量?

我可以使用MySQL命令行工具或Python API。欢迎您为其他DBMS发布解决方案。

+1

根据你的SQL数据,'语句'可能很简单或者很复杂,有很多数据或没有......所以你的进度指示可能不是很一致。 – Henry 2011-04-30 04:06:11

+0

我很清楚这种基于查询计数的方法的局限性,但除此之外,您将如何以%或进度条显示进度? – Imran 2011-04-30 07:21:29

回答

4

简单(简单)的方法:将PRINT语句添加到您的SQL脚本文件中,显示progess消息。

优点(除了显而易见的'它很难解析多语句结构')是你可以精确控制进度。例如,某些语句可能比其他语句运行时间要长,因此您需要对它们进行加权。

我不会想到在执行的语句数方面取得进展。我所做的是打印反馈,具体任务已启动并完成,如'同步表'等等','更新存储过程X'等

2

幼稚的解决方案是计算文件中分号的数量(或在文件中用作分隔符的任何其他字符)。

它通常工作得很好,除非你插入的数据有很多分号,然后你必须开始处理SQL的实际解析,这是一个头痛的问题。