MySQL数据库服务器为Linux系统
数据库用户名:root
数据库密码:123456
数据库库名:test

一、 要求

将test库所有表的建表SQL脚本生成到服务器“/opt/tables”目录,CREATE之前加DROP TABLE IF EXISTS语句,若表存在则先删表,一个表对应一个脚本,以表名命名对应文件。

二、 实现方法

创建一个shell脚本执行即可,脚本内容如下。

#!/bin/bash
### 数据库连接,用户名:root, 密码:root
dbcn='mysql -uroot -p123456';  #### 数据库名
db=test;  ### 获取数据库中表个数
ct=`$dbcn -N -e " SELECT COUNT(1)  FROM information_schema.TABLES AS t WHERE t.TABLE_SCHEMA = '$db' AND t.TABLE_TYPE = 'BASE TABLE' ; "`;
echo '数据库表总数量:'$ct;
## shell 文件所在目录
workdir=$(cd $(dirname $0); pwd);## 创建建表语句存放文件夹
sqldir=/opt/tables;
mkdir -p $sqldir;# 遍历数据库中的所有表
ii=0;
while [ $ii -lt $ct ];
do  p=$ii;  let ii++;  echo '----------------第'$ii'张表------------------';## 获取表名table_name=`$dbcn -N -e " SELECT t.TABLE_NAME FROM information_schema.TABLES AS t  where  t.TABLE_SCHEMA = '$db' AND t.TABLE_TYPE = 'BASE TABLE' limit $p,1;"`;  echo '表名:'$table_name;## 获取建表语句table_ddl=`$dbcn $db -N -e "SHOW CREATE TABLE  $table_name ;"`;echo '建表语句:'${table_ddl#*${table_name}};## 根据表名,把建表语句放入指定文件中echo -e "DROP TABLE IF EXISTS ${table_name};" > $sqldir/${table_name}.sql;                                                   echo -e "${table_ddl#*${table_name}};" >> $sqldir/${table_name}.sql ;
done
echo '数据库建表语句导出完毕!';

三、其他要求实现

如表的字符集为utf8,排序规则为utf8_bin(字符比较时大小写敏感),建表语句和字符串字段后会跟utf8和utf8_bin。

DROP TABLE IF EXISTS TEST_INST;
CREATE TABLE `TEST_INST` (`INST_CODE` VARCHAR(32) COLLATE utf8_bin DEFAULT NULL COMMENT '机构代码',`INST_ATTRIBUTE` VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '机构属性',KEY `INDEX_TEST_INST_1` (`INST_CODE`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

1、 需要把所有建表脚本字段后跟的utf8和utf8_bin去掉,只留表后的字符属性,字段属性跟随表。
shell脚本如下(具体要替换哪些字符串根据实际情况修改)

#!/bin/bash
for file_name in `grep  "COLLATE utf8_bin" -rl /opt/tables`do# echo $file_name    sed -i 's#COLLATE utf8_bin##' $file_name;done

2、 表后的字符排序属性utf8_bin需要批量修改成utf8_general_ci
shell脚本如下

#!/bin/bash
for file_name in `grep  "utf8_bin" -rl /opt/tables`do# echo $file_name    sed -i 's#utf8_bin#utf8_general_ci#' $file_name;done

3、 表后的属性去掉,跟随数据库的默认属性。
shell脚本如下

#!/bin/bash
for file_name in `grep  "ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin" -rl /opt/tables`do# echo $file_name    sed -i 's#ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin##' $file_name;done

1.2 批量生成MySQL建表语句相关推荐

  1. python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据

    """ 根据excel在mysql中建表(表名为文件名,字段为csv中的header,默认所有字段为varchar,如需更改,在数据库中更改即可),并插入数据 " ...

  2. mysql json建表_json数据自动生成MySQL建表语句

    #_*_coding:utf-8_*_ #author: cike #date: 18-9-13 import pymysql.cursors connection = pymysql.connect ...

  3. 基于表的数据字典构造MySQL建表语句

    表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...

  4. 自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...

    常规建表语句: CREATE TABLE `test_table` ( `id` int(11) NOT NULL, `name` char(64) NOT NULL, `password` char ...

  5. Shell脚本导出导入MySQL建表语句

    Shell脚本导出导入MySQL建表语句 一.导出sql语句 1.需求: 2.shell脚本如下: 二.导入sql语句 1.需求 2.shell实现1 3.shell实现2 一.导出sql语句 1.需 ...

  6. mysql 建表语句 stored as_Druid 解析Hive建表语句解析报错

    Druid 版本: com.alibaba druid-spring-boot-starter 1.2.3 Hive 建表SQL create table ads_data.sale_detail_o ...

  7. Excel自动生成sql建表语句

    ETL开发中重新整理很多表结构,写建表语句又是一件头疼的事情,干脆借鉴网友的代码,自己写了一个自动生成建表sql的模板. 模板下载:http://download.csdn.net/detail/en ...

  8. mysql 博客建表语句,mysql建表语句

    mysql建表语句 (2012-08-07 13:25:20) 标签: 杂谈 create table messages( id int unsigned primary key auto_incre ...

  9. navicat mysql 建表语句_navicat 8 for mysql怎么用语句建表

    Navicat是一套快速,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小企业的需要.Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创 ...

  10. navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...

    [斗蟹攻略]Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法. Navic ...

最新文章

  1. java协变 生产者理解_Java进阶知识点:协变与逆变
  2. 深度学习100例 | 第53天:用YOLOv5训练自己的数据集(超级详细完整版)
  3. DSP入门:中断PIE
  4. 如何在 C# 中使用 Attribute
  5. 三、Unity中的鼠标、键盘的获取
  6. C语言读取易语言的字节集,易语言字节集参数传递详解
  7. 2. 工业大数据的特点
  8. Java基于内存的消息队列实现
  9. windows 命令方式查找指定IP的MAC地址
  10. autohotkey 函数
  11. vue 符号..._如何在Windows 8.1上输入和使用表情符号
  12. Oracle 11g 安装与彻底卸载
  13. 小菜鸟的python学习之路(7)
  14. 什么是最好的在线UML软件工具?
  15. FlexRay通信机制
  16. Brain Stimulation: ​大脑电生理记录和刺激工具包(BEST)
  17. 罗马数字与阿拉伯数字的相互转化
  18. 【区块链与密码学】第9-7讲:群签名在区块链中的应用 I
  19. ORACLE12.1.0.2.0标准版下载地址
  20. 中年失业都去做什么_人到中年失业该何去何从?

热门文章

  1. 冒泡排序 BubbleSort
  2. 维修变频器和服务器赚钱吗,过来人经验分享:变频器维修杂谈(一)
  3. TextWatcher使用
  4. MLDn学习笔记 —— JDBC
  5. 网络抓包工具--wireshark
  6. 《自己动手写操作系统》 第一章总结
  7. 互联网公司的敏捷开发是怎么回事?这一份软件工程书单送给你!
  8. jenkins设置构建触发器
  9. 基于Python分析实现酒店评论的中文情感
  10. 视频编辑软件(Nero Video2021中文版) v23.0.1.12pjb