我有一个CSV文件,其时间戳格式如下
timestamp, day_chan2, day_chan3
01/02/2014 00:00, 9, 2
01/02/2014 00:00, 16, 5
我试图导入它到MySQL数据库使用LOAD DATA INFILE
$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文档中有这样的例子:
http://dev.mysql.com/doc/refman/5.1/en/load-data.htmlmysql的STR_TO_DATE可能是最好的方法,考虑到你的评论,见下面…
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;
}
}
祝你好运,如果你需要进一步的帮助,请留下评论。