如何在MYSQL中使用STR_TO_DATE和INSERT INTO

时间:2017-04-27 08:18:41

标签: php mysql csv

我想要做的是在我的数据库中导入CSV文件。 CSV文件的第一列({1}}包含此格式mydate的日期。我正在尝试从php中的表单插入文件。这是代码:

m.d.Y H:i:s

它导入除第一列之外的所有列中的数据。我无法理解我做错了什么。我已经看到很多if(isset($_POST["Import"])){ $filename=$_FILES["file"]["tmp_name"]; if($_FILES["file"]["size"] > 0){ $file = fopen($filename, "r"); while (($getData = fgetcsv($file, 10000, ",")) !== FALSE){ $conn=getdb(); $sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,) values (STR_TO_DATE(Mydata, '%m.%d.%Y %H:%i:%s'),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')"; STR_TO_DATE的例子,我认为我写它的方式是正确的。但仍然行不通。

2 个答案:

答案 0 :(得分:0)

你可以这样做

CronJob

答案 1 :(得分:0)

我使用LOAD DATA INFILE解决了这个问题。

以下是我使用的代码:

if(isset($_POST["Import"])){        
    $filename=str_replace("\\", "/", $_FILES["file"]["tmp_name"]);
    if($_FILES["file"]["size"] > 0){                 
        $conn=getdb();               
        $sql = "LOAD DATA LOCAL INFILE '".$filename."'
                INTO TABLE pay
                FIELDS OPTIONALLY ENCLOSED BY '\"' TERMINATED BY ','
                LINES TERMINATED BY '\\n'
                (@Mydata,ID,Transaction,ReceiptNo,ServiceID)
                SET Mydata = STR_TO_DATE( @Mydata, '%m.%d.%Y %H:%i:%s')";
    }
}