生成mysql统计信息

时间:2009-07-02 23:06:28

标签: php sql mysql database

我有一个csv文件,它是每周生成的,并加载到一个mysql数据库中。我需要制作一份报告,其中包括有关所导入记录的各种统计数据。第一个这样的统计数据是导入的记录数量。

我使用PHP与数据库连接,并将使用php生成显示此类统计信息的页面。

但是,csv文件是通过mysql脚本导入的,与任何PHP完全分开。

是否可以计算导入的记录并将数字存储在不同的字段/表格中,或者以其他方式存储?

由于无法更改数据库的结构,因此无法在特定时间内添加额外的时间字段来计算添加的字段。

从mysql脚本导入时是否可以使用查询,还是从php中生成/计算导入记录数的更好方法?

4 个答案:

答案 0 :(得分:1)

您可以使用以下查询获取表格中的记录数。

SELECT COUNT(*) FROM tablename

所以你可以做的是你可以在导入之前和导入之后计算记录数,然后像这样选择差异。

$before_count = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS c FROM tablename"));
// Run mysql script
$after_count = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS c FROM tablename"));
$records_imported = $after_count['c'] - $before_count['c'];

如果您愿意,可以从MySql脚本中完成所有这些操作,但我认为使用PHP来实现它会更加干净。

答案 1 :(得分:0)

一些桶式刮刀,但根据权限,您可以编辑cron执行的MySQL脚本,使用INTO OUTFILE将一些更新前的统计信息输出到文件中,然后在PHP中解析生成的文件。然后你会得到'之前'的统计数据,可以通过PHP执行统计数据查询,以获得'之后'统计数据。

然而,与许多这些解决方案一样,使用此解决方案几乎不可能找到现有行的更新。 (虽然新行应该很容易检测。)

答案 2 :(得分:0)

不确定你追求的是什么,但这里有更多细节:

  1. 让MySQL使用
    将相关统计信息导出到已知目录 SELECT ... INTO OUTFILE .. 这个目录需要MySQL可读/写 用户/组和您的Web服务器的用户/组(或任何用户/组) 如果您要通过cron自动执行cli,那么您正在运行PHPas 每周一次。该文件应为CSV格式,并以日期标记为
    “stats_export_YYYYMMDD.csv”。

  2. 让PHP在扫描导出目录中查找以文件开头的文件 “stats_export_”,也许使用简单的“scandir”函数 子测试。然后,您可以将匹配的文件名添加到数组中。一旦
    你的文件用完了,对数组进行排序以确保它符合日期顺序。

  3. 从中列出数组中列出的每个文件中的统计数据 转使用fgetcsv。将这些数据放入干净的中是明智的 数组,其中还包含从中提取的相关日期戳 文件名。

  4. 此时您将获得每个结尾处统计数据的摘要 阵中的一天。然后,您可以执行相关的统计信息SQL查询 再次(如果需要)直接从PHP并将统计数据添加到数据中 阵列

  5. 根据需要比较/对比和输出。

答案 3 :(得分:0)

使用PHP和'LOAD DATA INFILE .... INTO TABLE ..'加载文件,然后使用mysqli_affected_rows()(或mysql_affected_rows)获取导入的行数