PHP/ThinkPHP将MYSQL数据库导出为.sql文件php
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); }
最新评论
热门推荐
我要评论