PHP/ThinkPHP将MYSQL数据库导出为.sql文件php

/ / 2024-11-26   阅读:2567
PHP/ThinkPHP将MYSQL数据库导出为.sql文件...

1.PHP导出

//配置信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'xxx';
$cfg_dbuser = 'root';
$cfg_dbpwd = 'root';
$cfg_db_language = 'utf8';
$to_file_name = "xxx.sql"; //导出文件名

//链接数据库
$link = mysqli_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd,$cfg_dbname);
//编码方式
mysqli_query($link,"set names ".$cfg_db_language);
//查询数据库中所有表名,并保存在数组中
$tables = mysqli_query($link,"SHOW TABLES");
while($row = mysqli_fetch_array($tables)){
    $tabList[] = $row[0];
}

//将每个表的表结构导出到文件
foreach($tabList as $val){
    $sql = "show create table ".$val;
    $res = mysqli_query($link,$sql);
    $row = mysqli_fetch_array($res);
    $info = "-- ----------------------------\r\n";
    $info .= "-- Table structure for `".$val."`\r\n";
    $info .= "-- ----------------------------\r\n";
    $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
    $sqlStr = $info.$row[1].";\r\n\r\n";
    //把$info写入文件,文件不存在则创建
    file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
    //释放资源
    mysqli_free_result($res);
}
//将每个表的数据导出到文件
foreach($tabList as $val){
    $sql = "select * from ".$val;
    //若只需导出指定数据
         //    switch($val){
        //        case '表名':
        //           $sql = "select * from ".$val." where 条件;
        //           break;
        //        default:
        //            $sql = "select * from ".$val;
        //      }
    $res = mysqli_query($link,$sql);
    //如果表中没有数据,则跳出循环
   if(mysqli_num_rows($res)<1) continue;
    $info = "-- ----------------------------\r\n";
    $info .= "-- Records for `".$val."`\r\n";
    $info .= "-- ----------------------------\r\n";
    file_put_contents($to_file_name,$info,FILE_APPEND);
    //读取数据
    while($row = mysqli_fetch_row($res)){
        $sqlStr = "INSERT INTO `".$val."` VALUES (";
        foreach($row as $zd){
          $sqlStr .= "'".$zd."', ";
        }
        //去掉最后一个逗号和空格
        $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
        $sqlStr .= ");\r\n";
        file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
   }
   
    //释放资源
    mysqli_free_result($res);
    file_put_contents($to_file_name,"\r\n",FILE_APPEND);
}


2.ThinkPHP框架导出

$to_file_name = "xxx.sql"; //导出文件名
//链接数据库
$Db = Db::connect([
    'type'      => 'mysql',
    'hostname'    => '127.0.0.1',
    'database'    => 'xxx',// 数据库名
    'username'    => 'root',// 用户名
    'password'    => 'root',//密码
 ]);
//获取表名
 $tabList = $Db -> getTables();

//将每个表的表结构导出到文件
foreach($tabList as $val){
    $sql = "show create table ".$val;
    $res = Db::query($sql);
    $info = "-- ----------------------------\r\n";
    $info .= "-- Table structure for `".$val."`\r\n";
    $info .= "-- ----------------------------\r\n";
    $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
    $sqlStr = $info.$res[0]['Create Table'].";\r\n\r\n";
    //追加到文件
    file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
}

//将每个表的数据导出到文件
foreach($tabList as $val){
    $sql = "select * from ".$val;
    //若只需导出指定数据
         //    switch($val){        
                  // case '表名':        
                        // $sql = "select * from ".$val." where 条件;        
                        // break;        
                // default:        
                        // $sql = "select * from ".$val;        
                // }
    $res = Db::query($sql);
    //如果表中没有数据,则跳出循环
    if(count($res) < 1) continue;
    $info = "-- ----------------------------\r\n";
    $info .= "-- Records for `".$val."`\r\n";
    $info .= "-- ----------------------------\r\n";
    file_put_contents($to_file_name,$info,FILE_APPEND);
    //读取数据
    foreach($res as $v){
        $sqlStr = "INSERT INTO `".$val."` VALUES (";
        foreach($v as $zd){
            $sqlStr .= "'".$zd."', ";
        }
         //去掉最后一个逗号和空格
        $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
        $sqlStr .= ");\r\n";
        file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
    }
   
    file_put_contents($to_file_name,"\r\n",FILE_APPEND);
}


我要评论

昵称:
验证码:

最新评论

共0条 共0页 10条/页 首页 上一页 下一页 尾页
意见反馈