Php 使用加载数据填充时将CSV时间戳导入MySQL可接受格式

Php 使用加载数据填充时将CSV时间戳导入MySQL可接受格式,php,mysql,sql,csv,Php,Mysql,Sql,Csv,我有一个带有时间戳的CSV文件,格式如下 timestamp, day_chan2, day_chan3 01/02/2014 00:00, 9, 2 01/02/2014 00:00, 16, 5 我正在尝试使用LOAD DATA INFILE将其导入MySQL数据库 $query_name = "LOAD DATA INFILE ' " . $

我有一个带有时间戳的CSV文件,格式如下

 timestamp,             day_chan2, day_chan3
01/02/2014 00:00,             9,    2
01/02/2014 00:00,            16,    5
我正在尝试使用LOAD DATA INFILE将其导入MySQL数据库

$query_name = "LOAD DATA INFILE ' "
                                . $file_path . 
                                "' INTO TABLE '"
                                . $this->table_name . 
                                 " ' FIELDS TERMINATED BY '\,' 
                                 LINES TERMINATED BY '\\n' 
                                 IGNORE 1 LINES 
                                 (`time_stamp`,`day_chan2`,`day_chan3`)";
我的问题是:在将时间戳导入数据库时,如何将其转换为MySQL可以接受的格式


我现在不知道如何将时间戳更改为适当的时间戳,以便稍后查询

我从未尝试过这一点,但您可能可以这样做:

$query_name = "LOAD DATA INFILE ' "
                                . $file_path . 
                                "' INTO TABLE '"
                                . $this->table_name . 
                                 " ' FIELDS TERMINATED BY '\,' 
                                 LINES TERMINATED BY '\\n' 
                                 IGNORE 1 LINES 
                                 (@mytimestamp,`day_chan2`,`day_chan3`)
                                 SET time_stamp=STR_TO_DATE(@mytimestamp, '%d/%m/%Y %h:%i');"
MySQL文档中有这样的例子:

MySQLs可能是实现这一目标的最佳方式,鉴于您的评论,请参见下文

if (!($stmt = $mysqli->prepare("INSERT INTO ". $this->table_name . "(`time_stamp`,`day_chan2`,`day_chan3`) VALUES (STR_TO_DATE(?, 'd/m/y H:M'),?,?)"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
for ($fields in $data) {
   $stmt->bind_param('i', $fields[0]);
   $stmt->bind_param('i', $fields[1]);
   $stmt->bind_param('i', $fields[2]);
   if (!$stmt->execute()) {
      echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
   }
}

祝你好运,如果你需要进一步的帮助,请留下评论。

你将无法使用
加载数据填充
因为你需要在日期字段上运行转换,你必须逐行循环,我真的很想知道它是否有效:)你能做到吗?干净利落@达贡,我真的不知道。但这就是文档中的情况:)如果它不完全像上面那样工作,它可能也会像上面一样工作。我从不发布我没有实际测试过的答案。我在发布到mysql之前。。。请参阅我的答案,以获取示例代码