使用PHP将CSV数据导入mySQL

时间:2011-05-10 16:47:52

标签: php mysql csv

  

可能重复:
  How to import csv files selected by user to database

更新我现在让fgetcsv()函数正常工作并正确读取CSV文件(显示正确的输出,字段数等),所以我在mysql_query(“INSERT”中)滑入。 ......“);进入等式?

供参考:mySQL在DreamHost上运行,但在与DreamHost虚拟主机不同的服务器上运行,我无权执行LOAD DATA INFILE。我不打算改变托管公司。

我对PHP和mySQL都很陌生,并且学习动手。我在这里看了很多答案,但大多数建议使用LOAD DATA INFILE,我无法使用。我可以通过phpMyAdmin成功上传和导入有问题的CSV,当我尝试通过PHP脚本上传/导入它时,它将无法工作(因为通过DreamHost的权限问题)。

通过我的应用程序,用户将以CSV格式上传结构化列表。这是整个应用程序的关键所在。由于该权限问题,我看起来需要逐行读取上传的文件并为每一行执行INSERT。

我真的不知道从哪里开始。一旦用户选择了他们的文件并按下上传,该脚本就会运行。它将文件移动到适当的目录,并将完整文件的路径存储在$ path中。

3 个答案:

答案 0 :(得分:2)

你是对的,你应该解析每一行。这也将使您有机会验证数据,以便用户无法使用SQL注入。

您可以使用:

http://code.google.com/p/php-csv-parser/

我也使用dreamhost做一些事情。但是,当你准备好成长时,毕业于AWS。

进一步说明。我知道CSV很受欢迎,但是如果你有可能限制你的用户上传XML(或json),它将使你的工作在解析时更容易。当然,如果它对公众开放,并不是总是可行的,因为人们对XML有困难。但如果数据源是专业的,我强烈建议使用XML或JSON而不是CSV。

答案 1 :(得分:2)

您需要查看fgetcsv()。有趣的是,截至这篇文章,第一个评论是一个完全按照你上面概述的功能。

http://php.net/manual/en/function.fgetcsv.php

答案 2 :(得分:1)

如果您确实无法使用LOAD DATA INFILE MySQL功能,则必须使用php导入CSV文件。最简单的方法可能是使用PHP fgetcsv()函数。