万网提供的网站建设服务的具体项目,wordpress 博客编辑器,苏州网站开发建设制作,免费crm网站下载目录
一、获取数据库所有的数据表
方法一#xff1a;TP5
方法二:原生PHP
二、导出指定数据表的数据结构
三、 导出SQL文件
四、生成SQL语句
五、完整代码
前端
后端 语言#xff1a;PHP
数据库#xff1a;MySQL
功能#xff1a;分为四部分#xff0c;① 查出数…目录
一、获取数据库所有的数据表
方法一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;}
效果如下 五、完整代码
前端
!DOCTYPE html
html
headmeta charsetutf-8meta nameviewport contentwidthdevice-width, initial-scale1title/titlelink relstylesheet typetext/css href/static/index/layui/css/layui.cssscript typetext/javascript src/static/index/layui/layui.js/scriptscript src/static/index/js/jquery-1.11.3.min.js/scriptstyle typetext/cssbody{background-color:#F7F7F7;-webkit-overflow-scrolling: touch;height:auto;margin:0 auto;margin-top: 0.5rem;}/style
/headbody
div stylewidth:80%; margin: 1rem auto; background: #fff;padding:0.5remdiv classlayui-row layui-col-space30div classlayui-col-xs4 layui-col-sm4 layui-col-md4fieldset classlayui-elem-field layui-field-title stylemargin-top: 20px;legend数据表/legend/fieldsettable classlayui-tabletheadtrth数据表/th/tr /theadtbody{volist nametabList idvo}trtd{$vo}/td/tr{/volist}/tbody/table/divdiv classlayui-col-xs8 layui-col-sm8 layui-col-md8fieldset classlayui-elem-field layui-field-title stylemargin-top: 20px;legend导出数据结构/legend/fieldsetdiv classlayui-form-itemlabel classlayui-form-label输入表名/labeldiv classlayui-input-blockinput typetext nametable1 lay-verifyrequired autocompleteoff placeholder数据表 classlayui-input/div/divdiv classlayui-form-itemdiv classlayui-input-blockbutton typebutton classlayui-btn layui-btn-normal structure stylemargin-bottom:0.2rem;导出数据结构/button/div/divfieldset classlayui-elem-field layui-field-title stylemargin-top: 20px;legend导出SQL文件/legend/fieldsetdiv classlayui-form-itemlabel classlayui-form-label输入表名/labeldiv classlayui-input-blockinput typetext nametable2 lay-verifyrequired autocompleteoff placeholder数据表 classlayui-input/div/divdiv classlayui-form-itemlabel classlayui-form-label字段名/labeldiv classlayui-input-blockinput typetext namefield lay-verify autocompleteoff placeholder字段 classlayui-input/div/divdiv classlayui-form-itemlabel classlayui-form-label表达式/labeldiv classlayui-input-blockinput typetext nameexpre lay-verify autocompleteoff classlayui-input/div/divdiv classlayui-form-itemlabel classlayui-form-label stylecolor:#999说明/labeldiv classlayui-form-mid layui-word-aux like[not]between[not]in[not]null/div/divdiv classlayui-form-itemlabel classlayui-form-label查询条件/labeldiv classlayui-input-blockinput typetext namecondition lay-verify autocompleteoff classlayui-input placeholder数值或文本/divdiv classlayui-form-mid layui-word-aux/div/divdiv classlayui-form-itemlabel classlayui-form-label stylecolor:#999说明/labeldiv classlayui-form-mid layui-word-aux 字符串需要加英文引号[字符串]like需要加%[字符串%]between使用[1 AND 8]形式in 使用[(1,8)]形式/div/divdiv classlayui-form-itemdiv classlayui-input-blockbutton typebutton classlayui-btn layui-btn-normal creatSql stylemargin-bottom:0.2rem;生成SQL语句/buttonbutton typebutton classlayui-btn layui-btn-normal downSql stylemargin-bottom:0.2rem;导出sql文件/button/div/divdiv classlayui-form-itemlabel classlayui-form-label原生SQL语句/labeldiv classlayui-input-blocktextarea placeholder classlayui-textarea sqltext/textarea/div/div/div/div/div/bodyscript typetext/javascriptlayui.use([form,element], function(){var form layui.form,$ layui.jquery,element layui.element;// 导出数据结构$(.structure).click(function () {var table $(input[nametable1]).val()console.log(table)$.ajax({url:downStru,type:get,dataType:JSON,data:{table:table},success:function (res) {console.log(res)}})})// 导出sql文件$(.downSql).click(function () {var table $(input[nametable2]).val()console.log(table)var field $(input[namefield]).val()var expre $(input[nameexpre]).val()var condition $(input[namecondition]).val()$.ajax({url:downSql,type:get,dataType:JSON,data:{table:table,field:field,expre:expre,condition:condition},success:function (res) {console.log(res)}})})// 生成SQL语句$(.creatSql).click(function () {var table $(input[nametable2]).val()console.log(table)var field $(input[namefield]).val()var expre $(input[nameexpre]).val()var condition $(input[namecondition]).val()$.ajax({url:creatSql,type:get,dataType:JSON,data:{table:table,field:field,expre:expre,condition:condition},success:function (res) {console.log(res)$(.sqltext).val(res)}})})})
/script/html
后端
?php
namespace app\index\controller;
use think\Controller;
use think\Db;/*** 数据库操作类*/
class Sql extends Controller
{public function index(){//获取数据库所有的数据表$tabList Db::getTables(); $this-assign([tabList$tabList]);return $this-fetch();}// 导出数据结构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文件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语句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;}}
如果有其他已经测试可以使用的表达式可以在下面留言若导出的SQL文件在导入到其他数据库时出现错误也欢迎指教。