0

我正在尝试将 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' )

它完全没有错误,但也没有插入字段。我开始发疯了!

4

0 回答 0