从数据库中导出.csv文件
需求: 本次将数据库中的数据导出成.csv文件(office可以打开),
//数据的生成,根据你所选中的数据进行生成
//params:$activity_id -> 活动的id
//params:$form_id -> 导出数据中选中的活动id
public function exportData($activity_id,$form_id){
ini_set('memory_limit','500M');//设置允许最大内存
set_time_limit();//设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,在此设置为300秒 $collection = "form_".$activity_id;
$form_id_arr = explode(',', $form_id);
//由于form_id在mongodb中保存的为int类型,因此需要对string中的值进行类型装换
for ($i=; $i <count($form_id_arr) ; $i++) {
$form_id_arr[$i] = intval($form_id_arr[$i]);
}
//根据传入的参数来进行获取数据
$list = MongoClassClient::getInstance()->where_in('form_id',$form_id_arr)->get($collection);
if($list){
foreach($list as $key => $val ){
unset($list[$key]['_id']); //删除多余的id字段
}
}
//print_r($list);
if(empty($list)){
exit("暂无数据");
}
$column_name = array();
header ( "Content-type:application/vnd.ms-excel" );
header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GBK", date("Y-m-d_H_i_s" , time())."-".$activity_id ) . ".csv" );//设置文件的名称
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
foreach ($list as $key => $value) {
fputcsv($fp, $value);
}
ob_flush();
flush();
die();
}
以上是我个人使用的导出少量数据的方法,当然,也在网上找了一些导出大量数据的方法,代码和说明如下。
做项目时,想把数据导出保存到csv文件里,就查阅资料总结一下,把实现代码分享出来给大家,需要的朋友可以参考一下。
转自【B5教程网】:http://www.bcty365.com/content-10-595-1.html
set_time_limit();
ini_set ('memory_limit', '256M');
$db = $this->load->database('default',true);
$sql = "SELECT * FROM `t_mobile_number_section` $condition"; $query = $db->query($sql); $result = $query->result_array(); $filename = 'number'.time().'.csv'; header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0'); // 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a'); // 输出Excel列名信息
$head = array($title['number_section'],$title['area_code'],$title['province'],$title['city']);
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'gbk', $v);
} // 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head); // 计数器
$cnt = ;
$limit = ; // 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可 $i = ; $count = ;
foreach ($result as $key => $val) {
$count ++;
$cnt ++; //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 ,大数据量时处理
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush(); //刷新buffer
$cnt = ;
}
$rows[$i] = iconv('utf-8', 'gbk', $val['number_section']);
$rows[$i+] = iconv('utf-8', 'gbk', $val['area_code']);
$rows[$i+] = iconv('utf-8', 'gbk', $val['province']);
$rows[$i+] = iconv('utf-8', 'gbk', $val['city']);
fputcsv($fp, $rows);
}
从数据库中导出.csv文件的更多相关文章
- 数据库数据导出CSV文件,浏览器下载
直接上代码: def download(request): # 从数据库查询数据 data_list = Info.objects.all() # 定义返回对象 response = HttpResp ...
- 用BCP从SQL Server 数据库中导出Excel文件
BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...
- MySql数据库导出csv文件命令
MySql数据库导出csv文件命令: MySql数据库导出csv文件命令: mysql> select first_name,last_name,email from account into ...
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- PHP导出CSV文件
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CS ...
- mysql SQLyog导入导出csv文件
1.选择数据库表 --> 右击属性 --> 备份/导出 --> 导出表数据作为 --> 选择cvs --> 选择下面的“更改” --> 字段 --> 变量长度 ...
- mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法
Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它 ...
- MySQL直接导出CSV文件,并解决中文乱码的问题
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...
- Win10使用mysqldump导出csv文件及期间遇到的问题
作为测试,我们这里使用了名为testdb的数据库中的名为test_table的表,首先我们使用如下SQL来查看其中有何数据: select * from testdb.test_table 数据如下: ...
随机推荐
- mac 更改word的默认显示比例为125
1.打开或新建一个word文档 2.按 fn + option + F11 键,会弹出一个[项目]窗口,选中Normal, 双击[模块], 修改为125 Sub AutoOpen() ActiveWi ...
- 禁用谷歌字体解决WordPress访问速度过慢问题
这几天打开网站的时候发现突然变慢了,一直等待加载fonts.googleapis.com,搜索了一下发现很多wordpress网站都出现了 这种现象,原来是因为今日谷歌全线退出中国,貌似谷歌.Gmai ...
- 70道android面试题汇总
1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在 ...
- IClone地形编辑器结合T4M插件在Unity3D使用
通过IClone编辑器打造的地形,经过T4M插件的转化后,资源占用极少,比在Unity中自己刷出来的地形再通过T4M转化的要小的的多多了,非常适合用在手机上. IClone地形编辑器下载地址: 如果对 ...
- 在Cocos2d-X中新建Android项目
Windows下创建Cocos2d-X的Android项目并不复杂,关键是要改几个环境变量 一.进入Cocos2d-X主目录修改“create-android-project.bat” 大家都知道要点 ...
- TD数量不确定时如何让其宽度平均分布
D数量不确定时如何让其宽度平均分布?答案很简单,我们只要在table里面加上一下代码就可以实现. table { width: 100%; table-layout: fixed; }
- Apache、php、mysql单独安装配置
php, 安装版的,http://www.php.net/manual/zh/install.php.也有不安装版直接配置的. 在Windows 7下如何进行PHP配置环境. PHP环境在Window ...
- java数组复制的方式和效率比较
java中,数组的复制有以下三种方式: 1. 调用System.arraycopy(Arrays.copyOfRange可以当作第四种,但是底层调用的是System.arraycopy,所以,认为是同 ...
- 2013第51周二eclipse启动优化
2013第51周二eclipse启动优化 今天注意到了eclipse.ini配置文件中gc.log--在eclipse启动时清空,然后记录了eclipse每次运行过程中的gc分配情况,看到了一篇很好的 ...
- Ice笔记-利用Ice::Application类简化Ice应用
Ice笔记-利用Ice::Application类简化Ice应用 作者:ydogg,转载请申明. 在编写Ice相关应用时,无论是Client还是Server端,都必须进行一些必要的动作,如:Ice通信 ...