MySQL 摘要状态 table 用于存储操作结果

MySQL summary status table to store results of operations

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

为了质量保证运行ce,我想要一个名为 ImportLog 的 table 来存储记录以捕获每次导入的结果是 运行。此 table 如下所示:

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. 

在每个脚本的最后将是用相关数据向此 table 写入一行的代码。例如,假设我在 2015 年 8 月 29 日 运行 名为 ImportASR 的脚本导入了 12,902 条记录。在脚本的末尾,我想将一条记录附加到 ImportLog(如上面 table 中的第一条记录),使用如下内容:

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

每次我 运行 一个导入脚本时,它都会使用适当的数据向 ImportLog table 添加一行。

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

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

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

InportLog table 最初定义如下:

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

希望这对其他人有帮助!