You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MySQL查询当日未完成数据插入操作对应的文件名

调整方案

核心逻辑说明

你现在的脚本只查询了当日已经插入成功的文件记录,要找出未插入的文件,需要先明确「当日预期需要插入的所有文件列表」,再和已成功列表做差集比对即可。

修改后完整代码

// 1. 动态生成当日预期需要同步的所有文件名(按你的业务规则调整日期格式)
$today = date('Ymd');
$expectedFiles = [
    'WP_PLU03.CSV', // WP前缀的文件名看起来是固定的,没有日期后缀
    "CRM_MASMC_{$today}.csv", // CRM前缀的按日期生成
    "MEMBER_{$today}.csv", // 原示例里的20210250属于笔误,按你实际的日期规则调整即可
    // 如果有其他需要校验的文件直接加在这即可
];

// 2. 查询当日已成功插入的文件名(原有逻辑保留,提取文件名列即可)
$getFileSycn = $db->SELECT('FILE_NAME,LAST_UPDATED')
                   ->FROM('T_DATA_SYNCHRONIZE')
                   ->WHERE('DATE(LAST_UPDATED) = CURDATE()')
                   ->QUERY()->FETCHALL();
$insertedFiles = array_column($getFileSycn, 'FILE_NAME');

// 3. 计算差集,得到未插入的文件列表
$notInsertedFiles = array_diff($expectedFiles, $insertedFiles);

// 4. 处理结果:有未插入的文件就触发通知
if (!empty($notInsertedFiles)) {
    $notifyContent = "今日未完成插入的文件:" . implode("、", $notInsertedFiles);
    // 此处补充你的推送逻辑即可,比如发邮件、企业微信、短信
    echo $notifyContent;
    
    // 原有成功提示逻辑可保留,不需要可删除
    foreach($insertedFiles as $file) {
        echo "{$file} 已插入\n";
    }
} else {
    echo "今日所有文件均已插入成功";
}

注意事项

  • 如果你业务中预期的文件名规则和示例不同,直接调整$expectedFiles数组的生成逻辑即可,比如有动态后缀、多个同前缀文件的情况,提前把所有当日要校验的文件都放到这个数组里
  • 差集计算默认区分大小写,如果你的数据库里存的文件名大小写不统一,可以先统一转成小写/大写再做比对,避免误判
  • cronjob执行时可以把输出结果写到日志里,方便后续排查问题

内容的提问来源于stack exchange,提问作者Hardiyana Hardiyana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:42:03