【问题标题】:MySQL summary status table to store results of operationsMySQL汇总状态表存储操作结果
【发布时间】:2015-08-25 13:18:26
【问题描述】:

我的本​​地工作站上有一个 MySQL (5.6) 数据库,我经常将大型数据集拉入其中进行分析。我对每个数据集都有一个单独的 SQL 脚本,用于导入数据并在需要时重新格式化(特别是转换日期格式)。此外,我还有其他脚本可以对数据进行详细分析。

为了质量保证,我想要一个名为 ImportLog 的表,它存储一条记录以捕获运行的每个导入的结果。该表如下所示:

ImportName    DateRun        RowsImported
----------    -------        ------------
ImportASR     2015-08-29     12902
ImportEAD     2015-08-30     18023
ImportHRData  2015-08-30     122376

ImportLog的列定义如下:

ImportName    // the name of the script that is run
DateRun       // the date that the script is run
RowsImported  // the count of records imported in the run. 

在每个脚本的最后都会有一段代码在该表中写入一行相关数据。例如,假设我在 2015 年 8 月 29 日运行了名为 ImportASR 的脚本,它导入了 12,902 条记录。在脚本结束时,我想使用如下方式将一条记录附加到 ImportLog(如上表中的第一条记录):

INSERT INTO ImportLog
    VALUES("ImportASR",$DateRun,$RowCunt);

每次我运行一个导入脚本时,它都会在 ImportLog 表中添加一行,其中包含适当的数据。

我的问题是:如何使用当前日期填充 $DateRun 变量,并使用新导入的 ASR 数据集的行数填充 $RowCount 变量?还是我试图从错误的角度解决这个问题?

【问题讨论】:

  • 可能我误解了你的问题 - 在你的 mysql 脚本中应该可以包含 create table 语句。如果您想知道受上一个操作影响的行,您可以使用 mysql_affected_rows() (dev.mysql.com/doc/apis-php/en/…),尽管对于某些操作有一些限制。
  • 贾尔斯,我编辑了我的问题,希望能澄清我想做什么;有帮助吗?

标签: mysql import summary


【解决方案1】:

今天早上我偶然发现了问题的答案;它非常简单,令我惊讶的是它不需要使用任何变量。放在每个导入脚本末尾的代码类似于:

INSERT INTO ImportLog
  "Script: ImportASR",
  SELECT NOW(),
  (SELECT COUNT(*) FROM ASR_Full);

InportLog 表最初是这样定义的:

CREATE TABLE LPIS_SearchMatchLog (
  ImportName VARCHAR(25),
  DateRun DATETIME,
  RowCount INT
);

希望这对其他人有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2020-11-08
    • 2021-12-08
    • 2015-06-27
    相关资源
    最近更新 更多