开发者社区 问答 正文

使用PHP / MySQL导入CSV数据

尝试从CSV导入数据时遇到了一些问题,但还有一些问题,我还没有解决。

首先,这是我的代码,可以帮助您更好地了解事物(将其整理一些,删除CSS和DB连接):

" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . ""; echo "

Displaying contents:

"; readfile($_FILES['filename']['tmp_name']); } //Import uploaded file to Database $handle = fopen($_FILES['filename']['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $import="INSERT into importing(text,number)values('$data[0]','$data[1]')"; mysql_query($import) or die(mysql_error()); } fclose($handle); print "Import done"; //view upload form } else { print "Upload new csv by browsing to file and clicking on Upload
\n"; print " "; print "File name to import:
\n"; print "
\n"; print " "; } ?>
从本质上讲,这是我对各种方法进行多次尝试后发现的示例的改编。

我的CSV有两列数据,第一列是文本,第二列是整数数据库中的表也有两列,第一列称为“文本”,第二列为“数字”

所以我的问题是:

正在上传的文本只是在每个字段中显示为0,我不确定为什么 我一直在阅读有关以“”括起来的数据的信息,如果发生这种情况,我将如何对其进行排序? 如何忽略标题等的CSV的前X行? 在整个过程中数据格式是否已更改,或者是否可以在图形中使用?例如,一旦放入数据库,小数点会保留小数点吗? 我想涵盖了所有内容,在此先感谢您的帮助!

编辑:

刚刚对10,000条记录上传进行了测试,但出现错误:

“致命错误:超过30秒的最大执行时间”

有什么想法吗?

展开
收起
保持可爱mmm 2020-05-11 11:30:43 595 分享 版权
1 条回答
写回答
取消 提交回答
  • 前几天,我回答了一个几乎相同的问题:将CSV文件保存到mysql数据库中

    MySQL具有一项功能LOAD DATA INFILE,它允许它直接在单个SQL查询中导入CSV文件,而根本不需要通过您的PHP程序在循环中对其进行处理。

    简单的例子:

    query($query); ?> 就这么简单。

    没有循环,没有大惊小怪。和很多很多比PHP解析它更快。

    MySQL手册页在这里:http : //dev.mysql.com/doc/refman/5.1/en/load-data.html

    希望能有所帮助来源:stack overflow

    2020-05-11 11:30:56
    赞同 展开评论