LOAD DATA LOCAL INFILE MySQL / PHP问题

时间:2011-10-10 15:57:22

标签: mysql load

这是我的MySQL表结构

id    |   tracking_number   |   order_id

以下是CSV文件的结构: (有时缺少order_id,这似乎导致了问题)

"1R2689Y603406","33097"
"1R2689Y603404","33096"
"1R2689Y603414",
"1R2689Y603429","33093"
"1R2689Y603452",

这是我当前的SQL查询无法正常工作: (文件正在上传,并且正在正确读取,这是导致问题的查询本身)

        $sql = 'LOAD DATA LOCAL INFILE "'.$_FILES['my_file']['tmp_name'].'" 
        INTO TABLE table_tracking
        FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "\""
        LINES TERMINATED BY "\n" 
        (tracking_number,order_id)';

        mysql_query($sql) or die(myqsl_error());

我的查询有什么问题?谢谢你的帮助!

编辑:更改了CSV结构以表示有时会发生的丢失数据。 更改了查询以匹配我正在使用的查询

3 个答案:

答案 0 :(得分:2)

只是在这里尝试(不是100%自信)但是你尝试添加这样的目标列:

mysql_query("LOAD DATA LOCAL INFILE '".$_FILES['my_file']['tmp_name']."' 
     INTO TABLE table_tracking FIELDS TERMINATED BY ',' 
     OPTIONALLY ENCLOSED BY '\"' 
     LINES TERMINATED BY '\n'
     (tracking_number,order_id)");

表格中有三列,只提供两个数据。

答案 1 :(得分:1)

这对我有用:

$sql = 'load data local infile "c:/users/ramon/desktop/1.csv"
        into table test fields terminated by ","
        optionally enclosed by "\""
        lines terminated by "\n"';

mysql_query($sql) or die(myqsl_error());

您可能还需要确保第三列具有默认值。

答案 2 :(得分:0)

而不是$_FILES['my_file']['tmp_name'],请尝试

dirname(__FILE__)."/".$_FILES['my_file']['tmp_name']

dirname(__FILE__)将提供完整的目录路径,例如'C:/ path / to / directory'。