从数据库中导出.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 数据如下: ...
随机推荐
- gulp压缩js
1.安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 2.查看nodejs的版本号 3.npm ...
- PHP 中 AJAX 中文乱码解决
最近,在用PHP做一个AJAX功能时,出现了中文乱码.在网上搜索了一上,很多是有说不过试过都不行,我页面的的编码是UTF-8的,MYSQL中也是UTF-8的.以前在.NET中也遇到这样的问题,但只是在 ...
- web.py安装
web.py 是python的一个web插件,用于发布web服务安装下载web.py https://github.com/webpy/webpy 安装 解压下载的rar 打开控制台并定位到此文件夹输 ...
- GTW likes math(BC 1001)
GTW likes math Accepts: 472 Submissions: 2140 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 1 ...
- VS2005快捷键
VS2005快捷键 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显 ...
- Uubntu scrot 的简单使用
scrot 是一个使用 imlib2 库截取屏幕和保存图像的的工具. 1:安装 #apt-get install scrot 2:查看帮助 #scrot -help -v, --version显示版本 ...
- 对$NOMOD51的理解
很多朋友在看asm代码的时候,对下面的语句不是很了解,下面解说一下. $NOMOD51 $INCLUDE (REG932.INC) 解释:$NOMOD51,这一指令功能是使A51不识别8051的所有预 ...
- 【剑指offer】面试题25:二叉树中和为某一值的路径
题目: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路: dfs一下就可以了.一般dfs肯定递归写比 ...
- Rotate Array 解答
Question Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, t ...
- 【bzoj1031】[JSOI2007]字符加密Cipher
题目描述 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作:JSOI07 ...