この記事では主にmongoライブラリをローカルにエクスポートする方法を紹介しますが、これは一定の参考価値があるので、みんなに共有します。必要な友達は参考にしてください
yii内フレームワークの下で、本番の mongo ライブラリのデータを json ファイルにエクスポートし、/web/Controllers/ のローカル
1. Quote
public function actionExport() { public $target='/WWW/web/html/import/'; //windows 导出文件所在目录 $export =new Export($target,'QuestionUser',96); }
<?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; } }
ディレクトリ内のファイルをスキャンして Yii フレームワークのデータベースに入力する方法
以上がmongo ライブラリをローカルにエクスポートする方法の問題解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。