需要每天自动将统计数据从csv文件上传到sql数据库吗?

时间:2014-12-02 15:42:01

标签: php mysql csv

好的,所以即时尝试使用phpjobscheduler每天更新统计数据,它每天运行一个命令来打开php页面并更新数据库。 我用Googled这是我到目前为止管理的代码:

<?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文件中的数据更新数据库。

1 个答案:

答案 0 :(得分:0)

您需要在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);来解决您的错误。