需求:

在yii框架架下,导出生产mongo库中的数据到json文件,下载到本地

调用:

1.在/web/Controllers/TestController.php下引用

public function actionExport()

{

public $target='/WWW/web/html/import/'; //windows 导出文件所在目录

$export =new Export($target,'QuestionUser',96);

}

2.在/web/model下创建Export.php

/*导出mongo库中的数据

* @author lizhihui

* @date 2018-5-29

* 调用例子:Export('MyModel',96); //导出数据库MyModel中qId为96的数据

*/

Class Export

{

public $target;

public $model; //数据库对象 string,例如:'QuestionAnswer','QuestionUser'

public $qId; //问卷id int

public $db;

/*

* $target 导出文件所在目录

* $model

* $qId

*/

public function __construct($target,$model,$qId)

{

$this->target = $target;

$this->db=$model;

$this->model = new $model;

$this->qId = (int)$qId;

$this->export();

}

/**

* 导出mongo生产数据用于本地测试

* @author lizhihui

* @date 2018-5-29

*/

public function Export()

{

$iCount = $this->model->count(array(

'conditions'=>array(

'qId'=>array('equals' => $this->qId),

))

);

if(!$iCount){

$this->showMessage('数据为空');

}

$nStart = 0; //起始记录

$nCount = 100; //每次处理记录数

$nPage = intval($iCount/$nCount)+1;

$aReault=array();

for ($i=0;$i

$sWhere = array(

'conditions'=>array(

'qId'=>array('equals' => $qId),

),

'limit'=>$nCount,

'offset'=>$nStart,

);

$arr = $this->model->findAll($sWhere);

if(!is_dir($this->target)){

mkdir($this->target);

}

//写入文件

$limit = 1000;//每隔$limit行,刷新一下输出buffer,不要太大,也不要太小

foreach ($arr as $key => $val)

{

if($key!=0 && $key%$limit==0){

ob_flush();

flush();

}

$attr=$val->attributes;

//整理数据,删除不必要的键值

unset($attr['_id']);

unset($attr['current_db']);

unset($attr['pageInfo']);

$aReault[]=$attr;

}

$i++;

$nStart = $i*$nCount;

}

$filePath=$this->target.$this->db.'_'.$this->qId.'.json';

file_put_contents($filePath,json_encode($aReault));

//下载文件

if(!file_exists($filePath)){

$this->showMessage('目标文件不存在!');

}

header('Content-Type: application/json');

header('Content-Disposition: attachment; filename='.$this->db.'_'.$this->qId.'.json');

header('Accept-Ranges: bytes');

echo file_get_contents($filePath);

}

/**

* 信息输出

*/

private function showMessage($str, $err = 0) {

if (!$str) {

return false;

}

if ($err) {

echo "[ERROR]";

} else {

echo "[SUCCESS]";

}

echo date("Y-m-d H:i:s", time()) . " " . $str . "\n";

exit;

}

}

php导出mongo日志,导出mongo库到本地相关推荐

  1. mongo数据库导出/导入

    ### mongo数据库导出 mongodump --host=localhost --port=27017 -d db-xx -o='/opt/backup/dumpfiles/' mongodum ...

  2. ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...

    Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...

  3. android /data/system/dropbox,Android导出dropbox日志

    文章内容已重新排版:Android导出dropbox日志,请到该链接浏览,谢谢支持. 大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了.但是作为分析anr重要依据的必然离不开d ...

  4. shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...

    shell脚本批量导出MYSQL数据库日志/自动本地导出MYSQL二进制日志,按天备份[连载之构建百万访问量电子商务网站] 出处:http://jimmyli.blog.51cto.com/我站在巨人 ...

  5. 腾讯微博qq说说备份导出工具_QQ空间导出助手 – 日志、相册、视频、留言板、QQ 好友列表等...

    QQ空间导出助手 是一款用来导出 QQ 空间的日志.私密日志.说说.相册.留言板.QQ好友.视频为文件的 Chrome 扩展,供永久保存. 2T非常喜欢 QQ空间导出助手 介绍里的一段话: 落叶随风, ...

  6. [T系统]手帐04:无痕记录系统相关导出的日志

    ● 开发环境:Eclipse+Tomcat+MySQL+SVN ● 系统架构:JQuery+Bootstrap+JFinal+Memcache 概述:项目后期无痕追加"导出"的日志 ...

  7. jvm导出dump日志,分析内存情况

    1. 查看内存情况 top free top pid=18426 占用内存比例很高 2. 导出dump日志 jmap -dump:format=b,file=heap.hprof 18426 当前目录 ...

  8. svn服务器日志在哪个文件夹,SvnLog(svn日志导出工具)

    SvnLog是一款可以帮助您搜索日志的工具,当您在操作SVN服务器的时候,为了知道自己执行了哪些项目,知道服务器运行的日常情况,知道在服务器上修改的文件,您可以通过日志搜索的方式直接查看记录的数据,在 ...

  9. Excel模板导出之动态导出

    说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...

最新文章

  1. 6G+128G的华为新机真香,自费送一台!
  2. 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
  3. 磁金融宣布完成1.2亿元B轮融资,宽带资本领投
  4. L2-1 简单计算器 (25 分)详解c语言 模拟堆栈
  5. .NET 指南:转换操作符
  6. 用shell编写一个三角形图案
  7. 程序员过关斩将--重复的请求并不好过滤
  8. Linux 混合编译opencv与opencv_contrib的android版本
  9. pytorch实现Dropout与正则化防止过拟合
  10. vue.js中的组件是什么?
  11. 重磅!谷歌大脑提出EfficientNet平衡模型扩展三个维度,取得精度-效率的最大化!...
  12. 12.混淆——采样低频信号,采样高频信号_3
  13. html页面代码重用-document writeln
  14. RCNN学习笔记(1):Rich feature hierarchies for accurate object detection and semantic segmentation
  15. Visual Studio中删除所有空行
  16. SQL Server 2012 中 SSAS 多维数据浏览器已经废除
  17. 计算机管理模糊,电脑显示器显示有点模糊怎么办
  18. linux中删除svn中文件,删除SVN三种方法delSvn(windows+linux)
  19. Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animation)
  20. java编程获取屏幕分辨率_Java及Jquery获取屏幕分辨率的实现代码

热门文章

  1. Aarch64汇编语言
  2. java如何jasper_Jasper's Java Jacal
  3. (39)通过 PID 获取 EPROCESS
  4. 修改PE可选头关闭ASLR
  5. 详解虚函数的实现过程之单继承(2)
  6. 010 自动技能的设计和实现
  7. 1.25 包(package)详解
  8. 让你秒懂的折半查找(二分查找)
  9. 2021夏季每日一题 【week4 完结】
  10. java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext崩溃解决