iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >利用PHP导出MySQL数据表结构和SQL文件
  • 905
分享到

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

数据库mysqlphp 2023-09-07 20:09:16 905人浏览 独家记忆
摘要

目录 一、获取数据库所有的数据表 方法一:TP5 方法二:原生PHP 二、导出指定数据表的数据结构 三、 导出SQL文件 四、生成SQL语句  五、完整代码 前端 后端 语言:PHP 数据库:Mysql 功能:分为四部分,① 查出数据库的

目录

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

方法一: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语句,并查询

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

⑤ 写入导出文件

需要注意的是输入条件部分,字段名可以正常写,表达式支持=;>;<;>=;<=;<>;like;[not] between;[not] in;[not] null几种,当然也可以支持其他表达式,这里只列出了已经测试可以使用的表达式,查询条件需要特别注意,不同的表达式对应的查询条件也不相同,比如说like对应的是"%超声%",between对应的是1 AND 8,其实就是原生SQL的写法,通过自定义的方法进行拼接。

代码如下

public function downSql(){// ① 接收条件$table = input('table');$field = input('field');$expre = input('expre');$condition = input('condition');$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);// ③ 根据输入条件组装查询条件if (!empty($field) && !empty($expre) && !empty($condition)) {$where = "where"." ". $field . " " .$expre . " " .$condition;// 查询语句$sql = "select * from ".$table ." ".$where;}else{// 查询语句$sql = "select * from ".$table ;}$res = Db::query($sql);// 判断数据是否为空if(count($res) >= 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;}

效果如下

  

五、完整代码

前端

来源地址:https://blog.csdn.net/qq_25285531/article/details/130989854

您可能感兴趣的文档:

--结束END--

本文标题: 利用PHP导出MySQL数据表结构和SQL文件

本文链接: https://www.lsjlt.com/news/399072.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用PHP导出MySQL数据表结构和SQL文件
    目录 一、获取数据库所有的数据表 方法一:TP5 方法二:原生PHP 二、导出指定数据表的数据结构 三、 导出SQL文件 四、生成SQL语句  五、完整代码 前端 后端 语言:PHP 数据库:MySQL 功能:分为四部分,① 查出数据库的...
    99+
    2023-09-07
    数据库 mysql php
  • mysql如何导出表结构和数据
    MySQL可以通过以下几种方法导出表结构和数据: 使用mysqldump命令: 可以使用mysqldump命令来导出表结构和数据。...
    99+
    2024-04-12
    mysql
  • mysql怎么导出表数据sql文件
    可以使用以下方法导出MySQL表数据为SQL文件: 使用mysqldump命令行工具 在命令行中输入以下命令: mysqldum...
    99+
    2023-10-26
    Mysql
  • DataGrip导出和导入表结构和数据
    一、导出步骤 1)选择需要导出的数据库,点击右键选择 Export with 'mysqldump' 2)在弹出的界面中,选中mysql安装目录下的mysqldump.exe的位置,并设置导出的路径以及文件名称 点击Run按钮,则导出...
    99+
    2023-09-03
    DataGrip
  • DBeaver 导出表结构、数据
    环境:win10 、 DBeaver 22.0.0 背景:环境较为特殊,需要将表结构以及数据导入到另一个数据库,无法使用mysql命令,考虑DBeaver的功能来实现。 表结构的导出以及导入: 一顿搜...
    99+
    2023-09-03
    数据库 sql mysql 运维 开发语言
  • mysql中怎么导出单个表结构和数据
    今天就跟大家聊聊有关mysql中怎么导出单个表结构和数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。从mysql中导出单个表结构和数据 ...
    99+
    2024-04-02
  • plsql怎么导出表结构和数据
    在PLSQL中,可以使用SQL Developer工具来导出表结构和数据。以下是一些步骤: 打开SQL Developer工具,...
    99+
    2024-04-09
    plsql
  • sqlplus怎么导出表结构和数据
    要使用sqlplus导出表结构和数据,可以使用以下命令: 导出表结构: exp username/password@databa...
    99+
    2024-04-02
  • plsql如何导出表结构和数据
    在PL/SQL中,可以使用以下两种方法来导出表的结构和数据:1. 使用Oracle SQL Developer工具:- 打开Orac...
    99+
    2023-10-11
    plsql
  • dbeaver怎么导出表结构和数据
    在DBeaver中导出表结构和数据可以通过以下步骤实现: 打开DBeaver并连接到你的数据库。 在左侧导航栏中找到你想要导出的表...
    99+
    2024-04-02
  • mysql数据库中怎么导出表结构
    本篇文章给大家分享的是有关mysql数据库中怎么导出表结构,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql表结构导出 命令行...
    99+
    2024-04-02
  • sql怎么导出表数据到文件
    在SQL中,可以使用SELECT INTO OUTFILE语句将表数据导出到文件中。具体步骤如下: 连接到数据库...
    99+
    2024-04-19
    sql
  • SQLServer导出sql文件/表架构和数据操作步骤是什么
    今天就跟大家聊聊有关SQLServer导出sql文件/表架构和数据操作步骤是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。很多朋友问到sql s...
    99+
    2024-04-02
  • 利用mysqldump只导出数据库的表结构、存储过程和函数
    要实现标题中的任务需要用到mysqldump的几个参数 --no-data导出不包含表中数据  --routines导出包含存储过程和函数(注:导出用户必须要有select存储过程和函数的权限) ...
    99+
    2024-04-02
  • mysql怎么导出数据库所有表结构
    如果想要导出MySQL数据库中所有表的结构,可以使用以下命令: mysqldump -u username -p --no-data...
    99+
    2024-04-09
    mysql 数据库
  • 数据库如何导出表结构
    在大多数数据库管理系统中,可以使用 SQL 语句来导出表结构。以下是一些常用的方法: 使用 SQL 查询语句导出表结构:可以使用 ...
    99+
    2024-04-02
  • sqlserver怎么导出表结构和部分数据
    在SQL Server中,可以使用以下方法导出表结构和部分数据: 导出表结构: 可以通过以下SQL语句来生成表的CREATE语句,...
    99+
    2024-04-09
    sqlserver
  • oracle怎么批量导出表结构和数据
    在Oracle数据库中,可以使用expdp命令来进行表结构和数据的批量导出操作。以下是一个示例: 打开命令行窗口,输入以下命令连接...
    99+
    2024-04-19
    oracle
  • navicat导出数据库如何只导出表结构
    小编给大家分享一下navicat导出数据库如何只导出表结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  mysql导出表数据...
    99+
    2024-04-02
  • mysql mysqldump怎么实现只导出表结构或只导出数据
    这篇文章主要介绍“mysql mysqldump怎么实现只导出表结构或只导出数据”,在日常操作中,相信很多人在mysql mysqldump怎么实现只导出表结构或只导出数据问题上存在疑惑,小编查阅了各式资料...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作