Php 使用加载数据填充时将CSV时间戳导入MySQL可接受格式
我有一个带有时间戳的CSV文件,格式如下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 ' " . $
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之前。。。请参阅我的答案,以获取示例代码