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 '\\n'
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.
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 '\\n'
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:
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.