当前位置: 首页 > news >正文

MySQL批量生成建表语句

文章目录

  • 整体说明
  • 一、需求背景
    • 1.1、需求特点
    • 1.2、权限限制
  • 二、方案选择
    • 2.1、使用工具
      • 2.1.1、Navicat 或者 DataGrip
      • 2.1.2、Dbeaver
    • 2.2、写SQL脚本
      • 2.2.1、前置知识
      • 2.2.2、依赖系统表
      • 2.2.3、生成语句元素
      • 2.2.4、建表语句准备
      • 2.2.5、SQL脚本
      • 2.2.6、缺点说明
      • 2.2.7、效果展示

摘要: MySQL批量生成建表语句

关键词: MySQL、大批量、挑选、建表语句

整体说明

在使用MySQL的时候,遇到需要在大批量的表中,挑选一部分表,权限又只有只读权限,工具又没有合适的,最终使用了MySQL后台表,生成建表语句,具体的做法,大致如下:

一、需求背景

1.1、需求特点

  • 表数量大: 从如下截图可以看出,这个库总计369张表。

  • 指定表列表: 从如下 EXCEL 列表可知,总计选择了 258张指定表,做数据集成,数据集成工具无法自动创建目的表。

1.2、权限限制

  • 表只读权限: 由于公司要求,生产环境的数据库,只能给 只读 ,所以没法通过创建函数和存储过程的方式。
  • 网络无法联通: 网络环境是生产的环境,本地没有办法直接写程序通过JDBC等方式,连接数据库,查询数据,只能通过 VPN + 堡垒机 连接,也没有上传部署程序的权限。
  • 可以读系统 information_schema 库: 只读权限,可以读取系统库, information_schema 库 ,为我们后面的方案,提供的可能性。

二、方案选择

2.1、使用工具

2.1.1、Navicat 或者 DataGrip

这里以 DataGrip 举例,在这个功能来看,二者没有区别。

  • 关键字筛选: 直接在左侧输入 accout 就能把表筛选出来,然后选中,右键生成SQL即可。

    • 全量生成: 如果不筛选,直接点击生成,会全量生成所有建表语句

2.1.2、Dbeaver

关键字筛选 和 全量生成,这里就不再举例了,也支持。

  • "过滤器"筛选: 依据下图,操作,配置过滤器,并把对应表名,添加进去,之后即可过滤表。

    当我用这个工具时,我以为已经搞定了,结果这个过滤器添加那里只能一张表一张表添加,我这个 229张表,直接吐血,用不了!!

2.2、写SQL脚本

2.2.1、前置知识

前置知识,如下图简单介绍,如果需要再详细了解,可以查阅官方文档。

2.2.2、依赖系统表

依赖系统表简单列举如下图:

2.2.3、生成语句元素

2.2.4、建表语句准备

准备三张测试表,从简单到复杂,列举了建表语句中 90% 以上的情况

学生信息表,只包含基础元素

DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student` (
  `id` varchar(64) NOT NULL  COMMENT '数据标识',
  `create_user` varchar(200) DEFAULT NULL  COMMENT '创建人',
  `create_time` datetime DEFAULT NULL  COMMENT '创建时间',
  `update_user` varchar(200) DEFAULT NULL  COMMENT '更新人',
  `update_time` datetime DEFAULT NULL  COMMENT '更新时间',
  `student_id` varchar(200) DEFAULT NULL  COMMENT '学生id',
  `student_name` varchar(200) DEFAULT NULL  COMMENT '学生姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='学生信息表';

部门信息表,额外增加了索引的相关信息

DROP TABLE IF EXISTS `t_department`;
CREATE TABLE `t_department` (
  `id` varchar(64) NOT NULL  COMMENT '数据标识',
  `create_user` varchar(200) DEFAULT NULL  COMMENT '创建人',
  `create_time` datetime DEFAULT NULL  COMMENT

相关文章:

  • 解决CentOS 8.5被恶意扫描的问题
  • 美国国家航空航天局(NASA)的PUNCH任务
  • 第十章,防火墙带宽管理
  • Flink深入浅出之02
  • 软件系统属性
  • Java集合面试篇
  • 视觉-语言模型-出发点CLIP--(精读论文)
  • *图论基础(5)
  • 计算机网络笔记(一)——1.1计算机网络在信息时代中的作用
  • 数据库复习(第五版)- 第十章 数据库恢复技术
  • 【JavaEE】阻塞队列
  • HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践
  • Flask 打包为exe 文件
  • C# 实现鼠标轨迹录制与回放自动化功能(附源码)
  • linux修改不可用编辑的文件(修改权限失败)
  • linux指令学习--sudo apt-get install vim
  • 【单片机项目】电源如何扩展、电源模块、电池模块如何接线
  • Codepen和tailwindcss 进行UI布局展示
  • 静态成员不依赖于特定对象的内容
  • 使用LVGL驱动三色墨水屏,Arduino
  • 柬埔寨果农:期待柬埔寨榴莲走进中国市场
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 苏轼“胡为适南海”?
  • 西安市未央区委书记刘国荣已任西咸新区党工委书记
  • 俄乌拟在土耳其举行会谈,特朗普:我可能飞过去
  • 训练孩子的科学思维,上海虹口推出“六个一百”旗舰工程