2012-05-15 24 views
1
# download the file off the internet 
    $file = file_get_contents("http://localhost/sample.csv"); 
    $filepath = "C:/xampp/htdocs/test/file/sample.csv"; 
    file_put_contents($filepath, $file); 
# load the data into sample table 
    $pt1 = "LOAD DATA LOCAL INFILE "; 
    $pt2 = "'/C:/xampp/htdocs/test/file/sample.csv' INTO TABLE sample "; 
    $pt3 = "FIELDS TERMINATED BY ',' ENCLOSED BY '\"' "; 
    $pt4 = "LINES TERMINATED BY '\r\n' "; 
    $pt5 = "(col1,col2,col3,col4)"; 
    $sqlquerynew = $pt1.$pt2.$pt3.$pt4.$pt5; 
    mysql_query($sqlquerynew); 

这段代码适用于非csv(好吧,我用一个文本文件替代了它)。PHP脚本不会将CSV导入到MySQL

在这部分运行之前,我必须创建一个表。该表现在创建,但没有数据加载。路径中指出的文件存在。

可能是什么问题?

感谢

这是一个示例CSV我在网上找到

"REVIEW_DATE","AUTHOR","ISBN","DISCOUNTED_PRICE" 
"1985/01/21","Douglas Adams",0345391802,5.95 
"1990/01/12","Douglas Hofstadter",0465026567,9.95 
     ....... etc 
+1

您是否收到错误讯息?你有没有尝试删除标题行?或者在'INTO TABLE sample'后加'IGNORE 1 LINES'。 – Yaniro

+0

@Yaniro谢谢。我没有显示任何错误消息(在浏览器上)。是的,我做到了,它仍然无效。 – user1012451

+1

如果从命令行执行此操作,会发生什么情况? (我的意思是'mysql'命令提示符) – Yaniro

回答

1

两个问题

$pt2 = "'/C:/xampp/htdocs/test/file/sample.csv' INTO TABLE sample "; 

在C.

前取下 /

;其次,

$pt5 = "(col1,col2,col3,col4)"; 

确保您具有正确的列名称。如果您想要导入*所有列,请将其删除。在你的情况下删除标题也是一个好主意,因为删除$pt5你会成功,但标题行将被添加到表中。