gpt4 book ai didi

php - Mysql查询从csv文件插入记录到mysql Db

转载 作者:行者123 更新时间:2023-11-29 10:43:48 26 4
gpt4 key购买 nike

我正在尝试从 csv 插入数据文件至mysql数据库。数据被插入到数据库中。但不是以我预期的方式。就我而言,有几个 text文件包括 employee id , date , in timeout time 。另外,我想验证这一点,如果同一员工编号有一条具有相同日期的记录,则不应允许插入任何数据。

我的代码

$fdate = array_filter(explode(" ", $y));

$csv->emp_id = $epf;
$a_date = date("Y-m-d", strtotime($fdate[9]));
$csv->date= $a_date;

$csv->save();

$check = "SELECT * FROM daily_attendances WHERE emp_id = $epf AND date = '$a_date'";

$sql = DB::select(DB::raw($check));
$count = count($sql);

if($count > 0){
if ($fdate[11] == "AM") {
$update_query = "UPDATE daily_attendances SET in_time = '$fdate[10]' WHERE
emp_id = $epf AND date = '$a_date'";
$sql = DB::select(DB::raw($update_query));

} elseif ($fdate[11] == "PM") {
$o_time = date("H:i:s", strtotime($fdate[10] . $fdate[11]));
$update_query = "UPDATE daily_attendances SET out_time = '$o_time' WHERE emp_id = $epf AND date = '$a_date'";
$sql = DB::select(DB::raw($update_query));


}

电流输出

enter image description here

预期输出 enter image description here

最佳答案

我建议首先使用 MySQL 的 LOAD DATA 将 CSV 数据加载到临时表中。完成此操作后,您可以使用如下所示的查询将其插入到目标 daily_attendances 表中:

INSERT INTO daily_attendances (emp_id, date, in_time, out_time)
SELECT emp_id, date, MAX(in_time), MAX(out_time)
FROM temp
GROUP BY emp_id, date

此答案假设唯一的重复或丢失数据是您在问题中向我们展示的内容。一般来说,使用 LOAD DATA 从 CSV 引入大量新数据的速度最快。此外,清理数据所需的逻辑类型应该在数据库中处理。

关于php - Mysql查询从csv文件插入记录到mysql Db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com