LOAD DATA LOCAL INFILE的MySQL/PHP问题

问题描述:

这里是我的MySQL表结构LOAD DATA LOCAL INFILE的MySQL/PHP问题

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结构以表示丢失的数据有时会发生。 更改的查询相匹配,现在我使用的是一个

+0

你有什么实际的错误?或者实际的意外行为? – Romain

+0

该信息不会加载到数据库中。 – kylex

+1

尝试mysql_query(...)或死(mysql_error());并告诉我们你看到了什么。 – voldomazta

只是想在这里(不是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)"); 

您的表三列只提供两个数据。

+0

您仍然需要确保$ _FILES包含一个有效的文件路径,其中包含**正斜杠**,如MySQL所要求的。 – Johan

+0

@Laurent:这似乎解决了其中一个问题... – kylex

+0

@Johan是的。这是我没有信心的部分。kylex:nice :) –

这为我工作:

$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()); 

你也可能需要确保你的第三列具有缺省值。

+0

我有理由相信这是一个逃避的问题。 – voldomazta

+0

这似乎工作,除了我遇到问题。一些数据是不完整的(缺少订单号),这似乎是抛弃了。 – kylex

+0

您可能只需将缺省值放置到缺少数据的字段,以使其不是必备条件。 – voldomazta

相反的$_FILES['my_file']['tmp_name'],尝试

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

dirname(__FILE__)将使得像完整的目录路径 'C:/路径/到/目录'。