Laravel5.5 框架的sql文件导入与导出(laravel5.5 数据库备份和数据恢复)

备份数据库

public function beifensql(Request $request){
    $table_name = $request ->get('houtai');
    $DB_HOST = getenv('DB_HOST');
    $DB_DATABASE = getenv('DB_DATABASE'); //从配置文件中获取数据库信息
    $DB_USERNAME = getenv('DB_USERNAME');
    $DB_PASSWORD = getenv('DB_PASSWORD');
    $dumpfname = $DB_DATABASE . "_" . date("Y-m-d_H-i-s").".sql";
    $command = "D:\\phpstudy\\PHPTutorial\\MySQL\\bin\\mysqldump --add-drop-table --host=$DB_HOST --user=$DB_USERNAME ";
    if ($DB_PASSWORD) $command.= "--password=". $DB_PASSWORD ." ";
    $command.= $DB_DATABASE." ";
    $command.= $table_name;
    $command.= " > " . $dumpfname;
    system($command);
    //将备份信息入库
    $file_size = filesize($dumpfname);
    $times=date('Y-m-d H:i:s');
    $re = DB::table('database_backups')->insert(
        [
            'file_name' => $dumpfname,
            'file_size' => $file_size,
            'backups_time' => $times,
        ]);
    if($re){
        echo "<script>alert('备份成功');location.href='/'</script>";
    }
}

数据库恢复

 /** 数据恢复 导入 */
    public function huifusql($id){
        header('content-type:text/html;charset=utf-8');
        $results = DatabaseBackup::findOrFail($id);
//        dump($results);
        $filename=$results['file_name'];
        $DB_HOST = getenv('DB_HOST');
        $DB_DATABASE = getenv('DB_DATABASE'); //从配置文件中获取数据库信息
        $DB_USERNAME = getenv('DB_USERNAME');
        $DB_PASSWORD = getenv('DB_PASSWORD');

        set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
        $fp = @fopen($filename, "r") or die("不能打开SQL文件 $filename");//打开文件
        //print_r($fp);exit;
        @$conf = mysqli_connect($DB_HOST, $DB_USERNAME, $DB_PASSWORD,$DB_DATABASE) or die("不能连接数据库 $DB_HOST");//连接数据库
//        echo $filename;
        $_sql = file_get_contents($filename);
        $_arr = explode(';', $_sql);
//        dd($_arr);exit;
        foreach ($_arr as $_value) {
            mysqli_query($conf,"SET NAMES 'utf8'");
            mysqli_query($conf,$_value.';');
        }
        echo "<br>导入完成!";


    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingxingwuxin

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值