douwei7471
2014-05-07 20:43
浏览 145
已采纳

使用LOAD DATA INFILE时,将CSV时间戳导入MySQL可接受的格式

I have a CSV file with the timestamp in the following format

 timestamp,             day_chan2, day_chan3
01/02/2014 00:00,             9,    2
01/02/2014 00:00,            16,    5

I am trying to import it into a MySQL database using LOAD DATA INFILE

$query_name = "LOAD DATA INFILE ' "
                                . $file_path . 
                                "' INTO TABLE '"
                                . $this->table_name . 
                                 " ' FIELDS TERMINATED BY '\,' 
                                 LINES TERMINATED BY '\
' 
                                 IGNORE 1 LINES 
                                 (`time_stamp`,`day_chan2`,`day_chan3`)";

My problem is the following: how do I convert the timestamp into a format acceptable to my MySQL while importing it into the database?

I am clueless now on how to change the timestamp into a proper timestamp which I can use to query later.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doudi8525 2014-05-07 20:53
    已采纳

    I've never tried this, but you might be able to do something like:

    $query_name = "LOAD DATA INFILE ' "
                                    . $file_path . 
                                    "' INTO TABLE '"
                                    . $this->table_name . 
                                     " ' FIELDS TERMINATED BY '\,' 
                                     LINES TERMINATED BY '\
    ' 
                                     IGNORE 1 LINES 
                                     (@mytimestamp,`day_chan2`,`day_chan3`)
                                     SET time_stamp=STR_TO_DATE(@mytimestamp, '%d/%m/%Y %h:%i');"
    

    There are examples of this in the MySQL documentation:

    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dporu02280 2014-05-07 21:16

    MySQLs STR_TO_DATE is probably the best way to do this, given your comment, see below...

    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;
       }
    }
    

    Good luck and leave a comment if you need further help.

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题