在CodeIgniter中将大量数据导出为CSV

时间:2013-10-14 08:20:06

标签: php mysql codeigniter

我有大量数据,即(大约1000万条记录),并尝试导出.csv,但它完全无法正常工作,页面不断加载,然后导致空白页面。 我在max_execution_time文件中设置了memory_limitphp.ini但仍无法正常工作,我尝试了不同的方法,但没有成功。

在CodeIgniter中,我使用了数组到CSV库:

$this->load->helper('csv') and also built in function

$this->load->dbutil()

但仍然没有用,

所以任何想法如何实现这个大量数据管理和导出CSV文件没有任何问题。

5 个答案:

答案 0 :(得分:3)

您没有说明您正在使用哪个数据库,但我经常发现有大量记录,绕过框架并直接从查询中导出CSV要快得多。

在MySQL中,这看起来像:

SELECT id, name, price INTO OUTFILE '/tmp/products.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM products WHERE 1

答案 1 :(得分:2)

将“max_input_vars = 3000”或“max_input_vars = 5000”添加到php.ini文件中,然后尝试。希望这对你有所帮助。不要忘记重新启动Apache服务器。如果错误仍然存​​在,您可以扩展此限制。 [注意:我在通过浏览器导出大型csv文件时遇到了类似的问题。以上实现解决了我的问题]

答案 2 :(得分:1)

您可以使用以下示例查询生成csv文件,然后将其导出:

SELECT id, client, project, task, description, time, date INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM ts

答案 3 :(得分:0)

我不知道您想要实现什么,但通常不建议更改set_time_limit。这可能导致一个永远运行的脚本,如果你每隔x小时调用一次脚本就会在一段时间内使服务器崩溃。

但据我了解,您希望为用户生成csv文件。你现在做的是(我猜)用户进入链接并开始渲染csv。

你可以做什么(使用javascript)是当你点击链接时会启动一个进度条,你开始在后台渲染文件(甚至可以在完成时发送一封电子邮件)。这样用户仍然可以使用系统,用户也不会按重新加载,因此您开始渲染多个csv。

其次,我不知道codeigniter框架,本机函数总是更快。但是如果你需要渲染1.000+行,你可以考虑共享负载。所以加载100,插入100行,加载100,插入100 ....(你得到我希望的点)(100只是一个数字)

希望这些提示可以提供帮助

编辑---一些代码示例---

嗯,花了一些时间,但这里有一些代码示例。

首先,如果csv存在,我们将检查每x秒(在示例中我做60)(所以每分钟)。要检查文件是否存在,我们使用此stackoverflow anser并添加一个简单的javascript间隔。

var checkFile = self.setInterval(function(){checkFile()},60000); // interval uses milli seconds as far as I know

function checkFile() {
    if (UrlExists(url)) { // url exists is the function of the answer given
        checkFile = window.clearInterval(checkFile);
        // add other stuff to do
    }
}

使用此代码,您可以检查文件是否已呈现,如果是,您可以向用户或其他人设置消息

答案 4 :(得分:0)

使用数据库中的数据导出CSV文件的简单解决方案.. 请点击以下链接..

http://writephp.tuxkiddos.com/2013/02/export-to-csv-ci-helper-file.html https://gist.github.com/opnchaudhary/4744797#file-csv_helper-php   对于GitHub链接