PHP无法访问我的htdocs文件夹中的CSV文件

时间:2013-07-15 15:05:10

标签: mysql csv load-data-infile

我必须处理一个相当大的文件,大约需要处理40,000个++逗号分隔的行。直接使用Load数据infile可能不实用,因为文件需要预处理,修剪和清理。所以我使用PHP的文件处理函数并将整个文件读入一个数组,然后对其进行预处理以创建一个新的数组,形成可接受的行。

尝试使用批量插入将这个巨大的数组添加到数据库中不起作用,浏览器崩溃时出现“无数据接收错误”响应。我试图将批量插入数量减少到每个批量插入1000个,并产生相同的错误。其余的脚本运行正常,并且Bulk insert方法已经过测试,所以没有任何问题。

为了解决这个问题,我决定将输出这个数组用于存储在我的htdocs中的一个文件夹中的新CSV文件,如下所示:

 $fp = "reports/$filename" ; // fopen($_FILES['csvfile']['tmp_name'], "w");
                                    $headline =  array("contactid","firstname","lastname","email","companyid","companyname");
                                    fputcsv($fp, $headline);
                                    foreach ($newUsers as $fields) {
                                            fputcsv($fp, $fields);
                                    }
                                    fclose($fp);

上面的命令完美地写下文件,我可以在我的服务器上访问它。但是,Load data infile命令无法访问此文件。

这是我的加载数据infile命令:

                LOAD DATA LOCAL INFILE '$file'
                INTO TABLE $table
                CHARACTER SET latin1
                FIELDS TERMINATED BY ','
                ENCLOSED BY '"'
                LINES TERMINATED BY '\r\n'
                IGNORE 1 LINES;
SQLQUERY;

$ file是我刚刚写的CSV文件的名称。

我也尝试删除'LOCAL'一词,在这种情况下,它假定文件路径是存储mysql的子目录,并给出了这个错误:

找不到文件'/var/www/mysql/reports/thecsvfile.csv'

这是真实的。

我能解决这个问题吗?

0 个答案:

没有答案