关于如何导出mongo库到本地的问题解决
内容导读
收集整理的这篇技术教程文章主要介绍了关于如何导出mongo库到本地的问题解决,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2558字,纯文字阅读大概需要4分钟。
内容图文
这篇文章主要介绍了关于导出mongo库到本地,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下需求:
在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
<?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<$nPage;) { $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中文网!
相关推荐:
在yii框架中扫描目录下文件入数据库的方法
以上就是关于如何导出mongo库到本地的问题解决的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的关于如何导出mongo库到本地的问题解决全部内容,希望文章能够帮你解决关于如何导出mongo库到本地的问题解决所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。