0

0

关于如何导出mongo库到本地的问题解决

不言

不言

发布时间:2018-07-10 15:24:52

|

1538人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了关于导出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

腾讯交互翻译
腾讯交互翻译

腾讯AI Lab发布的一款AI辅助翻译产品

下载
<?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框架中扫描目录下文件入数据库的方法

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

456

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

547

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

335

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

385

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2111

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

357

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

259

2023.09.05

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号