sql导出导入备份恢复

   public function db_download(){
   		$filename = I('sql');

   		//执行资源下载
        // header("Content-Type:xls");// 接收类型
        header("Content-Disposition:attachment;filename={$filename}");// 接收为 附件
        // header("Content-Length:{$filesize}");// 接受大小

        readfile("./Public/sql/{$filename}");// 输出文件
   }
    public function localsql(){
   		if(!empty($_FILES['sqlpath']['tmp_name'])){
   			$config = array(
					'savePath' => './Public/sql/',
					'saveRule' => date ('Y-m-d.H-i-s.') .rand(100,999),
			);
			import('ORG.Net.UploadFile');
			$Upload = new UploadFile($config);
			$rst = $Upload -> uploadOne($_FILES['sqlpath']);
			if(!$rst){
				dump( $Upload -> getErrorMsg() );
			}else{
				$sqlname = $rst[0]['savename'];
				$path = './Public/sql/';
	   			$cmd = 'mysql -h'.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' < '.$path.$sqlname;
	   			
	   			exec($cmd,$arr,$flag);
	   			unlink($path.$sqlname);
	   			
	   			if($flag == 0){
	   				$this->redirect('Config/db_recover','',0.01,'<script>alert("导入成功");</script>');
	   			}else{
					$this->redirect('Config/db_recover','',0.01,'<script>alert("导入失败");</script>');
	   			}

			}
   		}

    }
   // db恢复
   public function db_recover(){
   		if(!empty($_POST)){
   			$path = './Public/sql/';
   			$Back = D('backup');
   			$id = I('post.id');
   			$data=$Back->select();
   			$sqlname = $Back -> where('id = ' . $id) -> getfield('sqlname');
   			$cmd = 'mysql -h'.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' < '.$path.$sqlname;
   			exec($cmd,$arr,$flag);
   			if($flag == 0){
   				foreach($data as &$v){
   					$Back->save($v);
   					unset($v);
   				}
   				$this -> redirect('Config/db_recover' , '' , 0.01 , '<script>alert("导入成功");</script>');
   			}else{
   				$this -> redirect('Config/db_recover' , '' , 0.01 , '<script>alert("导入失败");</script>');
   			}

   		}else{
   			$this -> getdb(1);
   			$this -> getdb(2);
   			$this -> getdb(3);
   			$this -> getdb(4);
   			$this -> getdb(5);
   			$this -> getdb(6);
   			$this -> getdb(7);
   			$this->display();
   		}
   }
// 数据库备份
   public function db_backup(){
   		if(!empty($_POST)){
   			set_time_limit(0);

   			$path = APP_ROOT.'/Public/sql/';
   			// dump($path);

   			$Back = D('backup');
   			$_POST['sqlname'] = date('Y-m-d--H-i-s') . '.sql';

			$cmd = 'mysqldump -h '.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' > '.$path.$_POST['sqlname'];
   			exec($cmd,$arr,$flag);
   			if($flag == 0){
   				$Back -> create();
	   			if(  $Back->find( I('post.id') )  ){
	   				$sqlname = $Back -> where('id = ' . I('post.id')) -> getfield('sqlname');
	   				$back = $Back -> where('id = ' . I('post.id')) -> setfield('sqlname' , $_POST['sqlname']);
	   				unlink($path.$sqlname);
	   			}else{
	   				$back = $Back -> add();
	   			}
   			}
   			
   			if( $back ){
   				$this -> redirect('Config/db_backup' , '' , 0.01 , '<script>alert("备份成功");</script>');
   			}else{
   				$this -> redirect('Config/db_backup' , '' , 0.01 , '<script>alert("备份失败");</script>');
   			}
   		}else{
   			$this -> getdb(1);
   			$this -> getdb(2);
   			$this -> getdb(3);
   			$this -> getdb(4);
   			$this -> getdb(5);
   			$this -> getdb(6);
   			$this -> getdb(7);


   			$this->display();
   		}
   }
  	// 获取当前备份
   private function getdb($id){
   		$Back = D('backup');
   		$assign = 'db'.$id;
   		$sqlname = $Back -> where('id = ' . $id) -> getfield('sqlname');
   		$this->assign($assign , $sqlname);
   }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值