我正在尝试将 csv 加载到我的 MySQL 表中。
CSV 的格式是(我跳过了 2 行,我只是缩短了 csv 以使其更具可读性)
|d07datum |d07stunde|d07tty |d07bg |d07vorgang|d07sig |d07zweig|d07mtyp|d07geb |d07lvke|d07kopie|d07syst|d07gebdat |d07plz |d07sex|d07abtlg|d07heimatzw|d07loeschgrund|d07busaktion|d07tour|d07aort|d07timestamp
|Apr 23 2012 12:00AM| 23|hwrsisis| 0| 9| | 0| 0| 0.000000| 0| | 0|Jan 1 1753 12:00AM| | | 0| 0| 0| 0| 0| 0|23.04.2012 23:09:02:728
我的负载数据语句是:
LOAD DATA LOCAL INFILE '{$_FILES['datei']['tmp_name']}'
INTO TABLE `tbl_daten`
ENCLOSED BY '|'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@dummy, @dummy, @dummy, d07bg, d07vorgang, d07sig, @dummy, @dummy, d07geb, @dummy, @dummy, @dummy, @dummy, @dummy, d07sex, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @datestamp)
SET d07timestamp = STR_TO_DATE(@datestamp, '%d-%b-%y %H:%i:%s' )"
我通过上传表单将文件加载到我的 PHP 脚本中,其中我的查询是这个 LOAD DATA 语句。它适用于除 d07timestamp (最后一列)之外的值。
格式是 23.04.2012 23:09:02:728,但我需要它来匹配 mysql 的时间戳形式,如 2012-02-15 05:35:45。
我不知道是什么阻止了它的工作。
为了完整起见,我发布了我的整个脚本。
上传.html
<html>
<form action="parsing.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
解析.php
<?php
error_reporting(0);
header("Content-type: text/html; charset=utf-8");
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db_data", $con);
if ($db->connect_errno)
{
echo 'No Connetion';
echo 'Error: (' . $db->connect_errno . ') ' . $db->connect_error;
exit;
}
$sql = "LOAD DATA LOCAL INFILE '{$_FILES['datei']['tmp_name']}'
INTO TABLE `tbl_data`
ENCLOSED BY '|'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@dummy, @dummy, @dummy, d07bg, d07vorgang, d07sig, @dummy, @dummy, d07geb, @dummy, @dummy, @dummy, @dummy, @dummy, d07sex, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @datestamp)
SET d07timestamp = STR_TO_DATE(@datestamp, '%d-%b-%y %H:%i:%s'' )";
$db->query($sql);
?>
我现在正在跑步
LOAD DATA LOCAL INFILE 'Path to CSV'
INTO TABLE `tbl_daten`
FIELDS ENCLOSED BY '|'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@dummy, @dummy, @dummy, d07bg, d07vorgang, d07sig, @dummy, @dummy, d07geb, @dummy, @dummy, @dummy, @dummy, @dummy, d07sex, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @datestamp)
SET d07timestamp = STR_TO_DATE(@datestamp, '%d-%b-%y %H:%i:%s' )
它完全没有错误,但也没有插入字段。我开始发疯了!