1.2 批量生成MySQL建表语句
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建表语句相关推荐
- python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据
""" 根据excel在mysql中建表(表名为文件名,字段为csv中的header,默认所有字段为varchar,如需更改,在数据库中更改即可),并插入数据 " ...
- mysql json建表_json数据自动生成MySQL建表语句
#_*_coding:utf-8_*_ #author: cike #date: 18-9-13 import pymysql.cursors connection = pymysql.connect ...
- 基于表的数据字典构造MySQL建表语句
表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...
- 自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...
常规建表语句: CREATE TABLE `test_table` ( `id` int(11) NOT NULL, `name` char(64) NOT NULL, `password` char ...
- Shell脚本导出导入MySQL建表语句
Shell脚本导出导入MySQL建表语句 一.导出sql语句 1.需求: 2.shell脚本如下: 二.导入sql语句 1.需求 2.shell实现1 3.shell实现2 一.导出sql语句 1.需 ...
- mysql 建表语句 stored as_Druid 解析Hive建表语句解析报错
Druid 版本: com.alibaba druid-spring-boot-starter 1.2.3 Hive 建表SQL create table ads_data.sale_detail_o ...
- Excel自动生成sql建表语句
ETL开发中重新整理很多表结构,写建表语句又是一件头疼的事情,干脆借鉴网友的代码,自己写了一个自动生成建表sql的模板. 模板下载:http://download.csdn.net/detail/en ...
- mysql 博客建表语句,mysql建表语句
mysql建表语句 (2012-08-07 13:25:20) 标签: 杂谈 create table messages( id int unsigned primary key auto_incre ...
- navicat mysql 建表语句_navicat 8 for mysql怎么用语句建表
Navicat是一套快速,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小企业的需要.Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创 ...
- navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...
[斗蟹攻略]Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法. Navic ...
最新文章
- java协变 生产者理解_Java进阶知识点:协变与逆变
- 深度学习100例 | 第53天:用YOLOv5训练自己的数据集(超级详细完整版)
- DSP入门:中断PIE
- 如何在 C# 中使用 Attribute
- 三、Unity中的鼠标、键盘的获取
- C语言读取易语言的字节集,易语言字节集参数传递详解
- 2. 工业大数据的特点
- Java基于内存的消息队列实现
- windows 命令方式查找指定IP的MAC地址
- autohotkey 函数
- vue 符号..._如何在Windows 8.1上输入和使用表情符号
- Oracle 11g 安装与彻底卸载
- 小菜鸟的python学习之路(7)
- 什么是最好的在线UML软件工具?
- FlexRay通信机制
- Brain Stimulation: ​大脑电生理记录和刺激工具包(BEST)
- 罗马数字与阿拉伯数字的相互转化
- 【区块链与密码学】第9-7讲:群签名在区块链中的应用 I
- ORACLE12.1.0.2.0标准版下载地址
- 中年失业都去做什么_人到中年失业该何去何从?