将csv文件中的大数据插入数据库

时间:2015-04-14 22:13:44

标签: php mysql csv

我正在使用 csvreader.php 来处理这项工作。所以问题是当我尝试在localhost上传30k行的文件时,脚本工作正常,但是当我使用ipage主机时它会在30后给我 内部服务器错误 第二。 这是我正在使用的代码:

$result = $this->csvreader->parse_file('/downloads/test.csv);//path to csv file
$this->admin_model->add_csv($result);

这是我正在使用的模型:

public function add_csv($data)
    {
        $this->db->insert_batch('my_contacts', $data); 
    }

正如我之前说的那样,脚本在localhost(超过30k行)和ipage上工作正常,但是如果行不到1k。 那么我怎样才能使这个脚本在ipage上工作就像localhost

一样

5 个答案:

答案 0 :(得分:1)

如果CSV数据是安全的,并且您确定没有安全风险,请尝试使用MySQL命令:LOAD DATA INLINE

https://dev.mysql.com/doc/refman/5.1/en/load-data.html

导入大型CSV文件时,快速

答案 1 :(得分:0)

如果它在30秒内死亡,那几乎可以肯定是服务器超时。检查您的php.ini和服务器配置设置。

过去,我必须批量处理非常大的数据库插入作业,导致导入,转换和写入的开销很高。

答案 2 :(得分:0)

由于CSV的大小,文件执行时间可能太长。

尝试增加页面最长执行时间的设置,例如将以下内容添加到页面顶部

ini_set('max_execution_time', 300);

注意,300表示300秒或5分钟。

答案 3 :(得分:0)

我确实让它工作,我修改了php.ini,我做了:

Max_input_time  = -1 // unlimited
Max_execution_time = -1 // unlimited
Memory_limit = 258M

我尝试使用max_execution_time = 1000但是在我无限制地使用它之后它没有工作。 无论如何,谢谢你们所有人。

答案 4 :(得分:0)

解决此类问题的最可靠解决方案是逐步实现。即不要尝试在一次执行中添加所有记录。

您的CSV文件有很多行,每行应该是数据库中的一行。让它像分页一样,在每一页中,让我们说,它会插入15行。

换句话说,从CSV文件中读取并对其内容进行分页,然后插入这些内容,然后使用任何重定向技术(我更喜欢,即使用javascript)重定向到下一页。