Cet article présente principalement l'exportation de la bibliothèque mongo vers le local, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Dans yii. Dans le cadre du framework, exportez les données de la bibliothèque mongo de production vers un fichier json et téléchargez-le sur le
1 Citation
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; } }
Comment analyser des fichiers dans un répertoire et les saisir dans la base de données dans le framework yii
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!