需要每天自动将统计信息数据从csv文件上传到SQL数据库


Need to upload stats data from a csv file to sql database automatically every day?

好的,所以我尝试使用phpjobscheduler每天更新统计信息,它每天运行一个命令来打开php页面并更新数据库。我已经谷歌搜索过,这是我到目前为止管理的代码:

<?php
$mysqli  =  new mysqli('localhost','xxxxx','xxxxx','xxxxx');
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s'n", mysqli_connect_error());
    exit();
}
$query = "LOAD DATA LOCAL INFILE 'xxxxx.CSV' REPLACE INTO TABLE `Stats_Day` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ''n' IGNORE 1 LINES (@txdate, department, code, descript, QTY, Total) SET  txdate = STR_TO_DATE(@txdate, '%Y/%m/%d')";
$res = $mysqli->query($query);
if ($mysqli->error) {
    try {   
        throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $msqli->errno);   
    } catch(Exception $e ) {
        echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >";
        echo nl2br($e->getTraceAsString());
    }
}
mysqli_close($con);
?>

但是这不起作用,它给了我一个空白页,SQL数据库上没有任何更新?它连接到数据库 (输入错误的详细信息,它显示不正确的用户详细信息)

但是没有更新数据库吗? 并且没有显示任何错误?

请协助?我需要做的就是每天凌晨 1 点用 .csv 文件中的数据更新数据库。

您需要

转义ENCLOSED BY部分的双引号。如果没有它,您将终止字符串。

$query = "LOAD DATA LOCAL INFILE 'xxxxx.CSV' REPLACE INTO TABLE `Stats_Day` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''"' LINES TERMINATED BY ''n' IGNORE 1 LINES (@txdate, department, code, descript, QTY, Total) SET  txdate = STR_TO_DATE(@txdate, '%Y/%m/%d')";

注意

  • 使用 error_reporting(E_ALL)ini_set('display_errors', 1); 在开发时纠正错误。