sql - 收集 mysql 统计信息

标签 sql mysql load-data-infile

计算插入数据库的新记录的最简单方法是什么?是否可以在加载查询中包含计数查询?

或者是否需要更复杂的东西,例如记录现有的最后一条记录并计算其后添加的所有内容?

编辑:

我有一个 cron 作业,它在直接传递给 mysql 的脚本中使用 LOAD DATA INFILE。此数据用于 php web 应用程序。作为 php web 应用程序的一部分,我需要生成每周报告,包括上周插入了多少条记录。

我无法修补 mysql,或彻底改变数据库模式/结构,但我可以添加新表或字段。我不想计算 csv 文件中的记录并将此结果存储在文本文件或其他文件中。相反,我更愿意通过查询在 PHP 中完成所有操作。

最佳答案

假设您使用 Mysql 5 或更高版本,您可以创建一个触发器,该触发器将在插入特定表时触发。请注意,“插入”触发器也会与“加载”命令一起触发。

使用触发器需要您将计数信息保存在单独的表中。基本上,您需要创建一个包含 1 行/列的新表来保存计数。然后,触发器将使用加载的数据量更新该值。

这是关于触发器的 MySQL 手册页,语法相当简单。 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

编辑

或者,如果您不想将数据保存在数据库中,您可以在存储过程中执行“加载”操作。这将允许您在开始加载之前和加载完成之后对表执行 select count()。您只需减去结果值即可确定加载期间插入了多少行。

这是关于过程的 MySQL 手册页。 http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

关于sql - 收集 mysql 统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063522/

相关文章:

PHP + Mysql insert into + jQuery 进度条

java - 当 CSV 文件在谷歌存储桶中并且 mysql 5.7.17 安装在云中的 RHEL 机器上时,如何使用 mysql 的加载数据 infile?

mysql - 我无法从文件中加载仅包含整数列的 MySQL 表

c# - TransactionScope 无意中锁定了部分数据库

sql - 在 Coldfusion 中执行 SQL 函数

mysql - 如何搜索包含150+列的Mysql表?

mysql - 错误代码 : 1093. 您无法在 FROM 子句中指定目标表 'tbl1' 进行更新(删除查询)

php - 如何统计mysql pdo中句子中的单词数

MySQL:将csv导入带引号的表中

mysql - 获取每组分组 SQL 结果中最大值的记录