利用PHP导出MySQL数据表结构和SQL文件

您所在的位置:网站首页 如何导出mysql的所有表和数据库 利用PHP导出MySQL数据表结构和SQL文件

利用PHP导出MySQL数据表结构和SQL文件

2024-02-04 14:35| 来源: 网络整理| 查看: 265

目录

一、获取数据库所有的数据表

方法一:TP5

方法二:原生PHP

二、导出指定数据表的数据结构

三、 导出SQL文件

四、生成SQL语句 

五、完整代码

前端

后端

语言:PHP

数据库:MySQL

功能:分为四部分,① 查出数据库的所有表;② 导出指定数据表的结构;③ 以SQL文件的形式导出指定数据表的数据,并且支持带条件导出,导出的数据可以直接导入数据库;④ 生成SQL语句。

整体效果:

一、获取数据库所有的数据表 方法一:TP5

使用TP5的DB类中的getTables方法

public function index() { //获取数据库所有的数据表 $tabList = Db::getTables(); $this->assign(['tabList'=>$tabList]); return $this->fetch(); } 方法二:原生PHP

也可以使用原生PHP代码

// 数据库信息 $cfg_dbhost = 'localhost'; $cfg_dbname = 'xxx'; $cfg_dbuser = 'XXX'; $cfg_dbpwd = 'xxx'; $cfg_db_language = 'utf8'; $to_file_name = "xxx.sql"; //导出文件名 //链接数据库 $link = mysqli_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd,$cfg_dbname); //查询数据库中所有表名,并保存在数组中 $tables = mysqli_query($link,"SHOW TABLES"); 二、导出指定数据表的数据结构

逻辑说明:输入要导出的数据表,指定导出的文件名,获取数据结构,写入导出文件

// 导出数据结构 public function downStru() { // 接收条件 $table = input('table'); $to_file_name = ROOT_PATH . "public". DS ."sql". DS . "table_".$table.".sql" ; // 导出文件名 // 导出数据表结构 $sql = "show create table ".$table; $res = Db::query($sql); $info = "-- ----------------------------\r\n"; $info .= "-- Table structure for `".$table."`\r\n"; $info .= "-- ----------------------------\r\n"; $info .= "DROP TABLE IF EXISTS `".$table."`;\r\n"; $sqlStr = $info.$res[0]['Create Table'].";\r\n\r\n"; // 写入到文件 file_put_contents($to_file_name,$sqlStr); }

导出后结果如下图,可以直接导入数据库使用

三、 导出SQL文件

说明:以SQL文件的形式导出指定数据表的数据,并且支持带条件导出,导出的数据可以直接导入数据库。

① 先输入到导出的数据表和条件(条件可为空),指定导出文件名称;

② 获取数据表的结构并写入文件

③ 根据输入的条件组装SQL语句,并查询

④ 接收到查询结果后,循环结果集并拼接插入数据格式(如果有特殊格式请过滤掉,否则在导入数据库时会出错)

⑤ 写入导出文件

需要注意的是输入条件部分,字段名可以正常写,表达式支持=;>;=;= 1){ $info = "-- ----------------------------\r\n"; $info .= "-- Records for `".$table."`\r\n"; $info .= "-- ----------------------------\r\n"; file_put_contents($to_file_name,$info,FILE_APPEND); /**********④ 拼接插入数据格式**************/ foreach($res as $v){ $sqlStr = "INSERT INTO `".$table."` VALUES ("; // 循环出字段对应的数据,并组装 foreach($v as $zd){ // 替换数据中的换行符 $zd = str_replace("\r\n","",$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); } }

导出结果如下,可以使用此文件直接导入到其他数据库

四、生成SQL语句 

说明:接收输入的数据表和条件,构造SQL查询语句,把构造的语句返回

public function creatSql() { // 接收条件 $table = input('table'); $field = input('field'); $expre = input('expre'); $condition = input('condition'); // 根据输入条件组装查询条件 if (!empty($field) && !empty($expre) && !empty($condition)) { $where = "where"." ". $field . " " .$expre . " " .$condition; // 查询语句 $sql = "select * from ".$table ." ".$where; }else{ // 查询语句 $sql = "select * from ".$table ; } return $sql; }

效果如下

  

五、完整代码 前端 body{ background-color:#F7F7F7; -webkit-overflow-scrolling: touch; height:auto; margin:0 auto; margin-top: 0.5rem; } 数据表 数据表 {volist name="tabList" id="vo"} {$vo} {/volist} 导出数据结构 输入表名 导出数据结构 导出SQL文件 输入表名 字段名 表达式 说明: =;>;=;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3