首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建每周MySQL报告

创建每周MySQL报告
EN

Server Fault用户
提问于 2009-07-12 09:01:53
回答 3查看 2.4K关注 0票数 1

我有一个cron脚本,每天运行,将数据INFILE加载到MySQL数据库中。我想,使用PHP作为web应用程序的一部分,生成一份每周报告,显示在过去7天中插入的记录总数。

我想知道最好的办法。修补或修改MySQL不是一个选项,也不能更改数据插入的方式。我倾向于在插入之前避免计算CSV文件,因为将这些数据bac读入PHP会很麻烦。

有什么建议吗?

EN

回答 3

Server Fault用户

发布于 2009-07-12 09:31:59

它必须在PHP应用程序中吗?在cron脚本中,您可以计算要插入的行数,并将它们添加到日志文件或mysql db中的一个小日志表中(除非这就是修改mysql的意思)。我不确定,但我想myql函数row_count()也能处理INFILE数据,因此计算数字很容易。

而且,可能是最简单的方法,如果插入后未修改行,则可以向数据库添加一个时间戳列,该列将自动设置为插入日期,并将数字计数(),为期一周。

票数 1
EN

Server Fault用户

发布于 2009-07-16 20:45:22

在运行LOAD数据INFILE查询后立即使用PHP ()函数。这将返回如下所示的字符串:

记录:1删除:0跳过:0警告:0

请参见php函数参考: mysql_信息()相关的mysql_受影响_行()函数。

无论您做什么,都不要依赖于显示表状态中的行计数。根据存储引擎的不同,它可能是非常不正确的,并且只对查询优化器对优化做出一些更好的判断非常有用。这在显示表状态中有文档记录(这里引用了特定的部分)

行行数。一些存储引擎(如MyISAM )存储确切的计数。对于其他存储引擎,如InnoDB,这个值是一个近似值,并且可能与实际值相差40 %至50%。在这种情况下,使用SELECT COUNT(*)获得准确的计数。对于INFORMATION_SCHEMA数据库中的表,行值为空。

票数 1
EN

Server Fault用户

发布于 2009-07-12 09:31:53

如果您感兴趣的是特定模式和表中的行数(假设没有行删除),那么您可以使用MySQL命令show table status或命令行use mysqlshow --status dbname。这将为模式中的每个表列出一些扩展信息,包括行计数(或者您可以使用like来选择特定的表)。

可以使用简单的SQL从INFORMATION_SCHEMA数据库检索相同的数据,可能如下所示:

选择Table_name,SUM(Table_rows),从INFORMATION_SCHEMA.PARTITIONS中选择TABLE_NAME (‘table2 1’,'table2');

您可以创建一个简单的cron作业,每天获取这个快照一次,然后可以很容易地从PHP中提取出有用的数据。见鬼,您甚至可以将它存储在数据库表中;-)

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/39516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档