这是我的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结构以表示有时会发生的丢失数据。 更改了查询以匹配我正在使用的查询
答案 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'。