1

我有一个脚本,它使用explode 将csv 文件导入MySQL 表以分隔字段。我在 csv 文件中的最后一个字段是日期时间字段,但格式不正确,如下图所示: 在此处输入图像描述

我想使用下面的代码将 csv 插入 MySQL 并将最后一列的格式从 mm/dd/yyyy hh:mm:ss am/pm 更改为 yyyy-mm-dd hh:mm:ss 的 MySQL 格式

现有的工作脚本(只是不导入日期时间字段,因为格式错误):

$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "LoadsOverWB.csv";
foreach(split($lineseparator,$csvcontent) as $line) {

    $lines++;

    $line = trim($line," \t");

    $line = str_replace("\r","",$line);

    /************************************
    This line escapes the special character. remove it if entries are already escaped in the csv file
    ************************************/
    $line = str_replace("'","\'",$line);
    /*************************************/

    $linearray = explode($fieldseparator,$line);

    $linemysql = implode("','",$linearray);

    if($addauto)
        $query = "replace into $databasetable(loadnumber,weighbillnumber,VehicleRegistration,haulier,vehicleweight,rolledproductkg,hegrosskg,roofinhkg,nonmetalkg,wbtotalkg,datetime) values('','$linemysql');";
    else
        $query = "replace into $databasetable(loadnumber,weighbillnumber,VehicleRegistration,haulier,vehicleweight,rolledproductkg,hegrosskg,roofinhkg,nonmetalkg,wbtotalkg,datetime) values('$linemysql');";

    $queries .= $query . "\n";

    @mysql_query($query);
}

一如既往地提前感谢,非常感谢。

4

2 回答 2

1

爆炸后只需添加两行

$key    =   count($linearray);
$linearray[$key - 1]    =   date('Y-m-d H:i:s',strtotime($linearray[$key - 1]));

$linemysql = implode("','",$linearray);

同样在插入 print_r 之前查看结果是否已更改。

编辑:

查看您正在使用的库,我假设每行的最后一个索引是您的日期列(TIME OVER WEB)。所以我计算数组的长度并计数 - 1 给了我最后一个索引,所以我正在应用 php 日期函数。date('format',strtotime(datevalue)) strtotime 将给定的字符串转换为像 32431234 这样的数字,然后 date 函数采用两个参数。格式和编号。我相信这足以让你理解。

于 2013-01-17T08:08:51.763 回答
1

首先,您应该检查fgetcsv()。您将把每一行放入一个数组中,并且能够更好地处理它。

要回答您的问题,您需要格式化日期。

$date = $linearray['date']; // or what key your date has
$date = date('Y-M-d H:i:s', strtotime($date));
于 2013-01-17T08:09:40.937 回答