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

  • 一、导出sql语句
      • 1、需求:
      • 2、shell脚本如下:
    • 二、导入sql语句
      • 1、需求
      • 2、shell实现1
      • 3、shell实现2

一、导出sql语句

1、需求:

1.1、根据数据库表名,把不同的数据库建表语句导入不同的文件夹中,
1.2、每个表的建表语句生成单个文件

2、shell脚本如下:

#!/bin/bash
### 数据库连接,用户名:root, 密码:root
dbcn='mysql -uroot -proot';  #### 数据库名
db=stp_product_service;  ### 获取数据库中表个数
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=$workdir/createTable;
mkdir -p $sqldir;
mkdir -p $sqldir/Bond;
mkdir -p $sqldir/Fx;
mkdir -p $sqldir/Irs;
mkdir -p $sqldir/Sirp;
mkdir -p $sqldir/BcidTradePlatform;
mkdir -p $sqldir/BCIDMember;
mkdir -p $sqldir/Ccmm;# 遍历数据库中的所有表
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}};## 根据表名,把建表语句放入指定文件中if [[ $table_name == bond* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/Bond/${table_name}_DDL.sql ;elif [[ $table_name == fx* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/Fx/${table_name}_DDL.sql ;elif [[ $table_name == irs* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/Irs/${table_name}_DDL.sql ;elif [[ $table_name == sirp* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/Sirp/${table_name}_DDL.sql ;elif [[ $table_name == bcid_trdpl* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/BcidTradePlatform/${table_name}_DDL.sql ;elif [[ $table_name == bcid* ]]; thenecho -e ${table_ddl#*${table_name}} > $sqldir/BCIDMember/${table_name}_DDL.sql ;elseecho -e ${table_ddl#*${table_name}} > $sqldir/Ccmm/${table_name}_DDL.sql ;fiecho '--------------------------------------------------------------------------------------------';
done echo '数据库建表语句导出完毕!';

二、导入sql语句

1、需求

根据前面导出的建表语句,导入新的数据库中

2、shell实现1

把所有建表语句全部写入同一个临时文件中,一次性执行完毕,文件开头关闭外键约束检查,文件结尾开启外键约束检查
因为是临时外键约束,所以每次执行都要关闭或检查,否则每次执行前,临时外键约束都会重置为全局外键约束

#!/bin/bash
### 数据库连接,用户名:root, 密码:root
dbcn='mysql -uroot -proot';  #### 数据库名 ###############################
db=stp_test;mysql_source(){  for file_name in `ls -A $1`  do  if [ -f $1$file_name ];then  # 建表语句追加到临时文件中cat $1$file_name >> $2;echo -e ";" >> $2;echo a=$1$file_name;fi  done
}  ## shell文件所在目录
workdir=$(cd $(dirname $0); pwd);
## sql建表文件根目录 ###########################
sqldir=$workdir/createTable## 临时文件
tempfile=$sqldir/temp.sql;## 建表语句所在的文件夹
bonddir=$sqldir/Bond/;
fxdir=$sqldir/Fx/;
irsdir=$sqldir/Irs/;
sirpdir=$sqldir/Sirp/;
bcidTrdplDir=$sqldir/BcidTradePlatform/;
bcidDir=$sqldir/BCIDMember/;
ccmmdir=$sqldir/Ccmm/;## 导入语句前关闭外键约束
echo -e "SET FOREIGN_KEY_CHECKS=0;" > $tempfile;## 把所有的建表语句导入到临时文件中
mysql_source $bonddir $tempfile;
mysql_source $fxdir $tempfile;
mysql_source $irsdir $tempfile;
mysql_source $sirpdir $tempfile;
mysql_source $bcidTrdplDir $tempfile;
mysql_source $bcidDir $tempfile;
mysql_source $ccmmdir $tempfile;## 导入语句后开启外键约束
echo -e "SET FOREIGN_KEY_CHECKS=1;" >> $tempfile;## 执行临时文件中的建表语句
$dbcn $db -N -e "source $tempfile" ;## 删除临时文件
rm $tempfile;echo 'success';

3、shell实现2

利用全局外键约束,不必把所有的建表语句放入同一个文件中执行,但是最后不要忘记开启

#!/bin/bash
### 数据库连接,用户名:root, 密码:root
dbcn='mysql -uroot -proot';  #### 数据库名
db=stp_test;mysql_source(){  for file_name in `ls -A $1`  do  if [ -f $1$file_name ];then  echo a=$1$file_name;$dbcn $db -N -e "source $1$file_name" ;fi  done
}  ## shell文件所在目录
workdir=$(cd $(dirname $0); pwd);
sqldir=$workdir/createTable## 建表语句所在的文件夹
bonddir=$sqldir/Bond/;
fxdir=$sqldir/Fx/;
irsdir=$sqldir/Irs/;
sirpdir=$sqldir/Sirp/;
bcidTrdplDir=$sqldir/BcidTradePlatform/;
bcidDir=$sqldir/BCIDMember/;
ccmmdir=$sqldir/Ccmm/;## 导入语句前关闭外键约束检查(全局变量)
$dbcn $db -N -e "SET GLOBAL FOREIGN_KEY_CHECKS=0;";mysql_source $bonddir;
mysql_source $fxdir;
mysql_source $irsdir;
mysql_source $sirpdir;
mysql_source $bcidTrdplDir;
mysql_source $bcidDir;
mysql_source $ccmmdir;## 导出语句前开启外键约束检查(全局变量)
$dbcn $db -N -e "SET GLOBAL FOREIGN_KEY_CHECKS=1;";echo 'import success';

Shell脚本导出导入MySQL建表语句相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. shel脚本mysql锁表_centos下shell脚本kill掉mysql锁表进程【笔记】

    前几天发现服务器上的mysql出现锁表了,show processlist后发现好多都是因为写进session才锁表的,看到这个想起了会不会是硬盘空间不够了,马上查看了服务器硬盘空间,发现都100%了 ...

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

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

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

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

最新文章

  1. 枚举类型是怎样定义的?有什么用途?_为什么受伤后会留疤?疤分那些类型?留疤后该怎样处理?...
  2. mysql排序分页乱的_Mysql 排序分页混乱
  3. goland 交叉生成linux文件
  4. parseInt和parseFloat(转换成数字,提取成数字)?
  5. object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded
  6. 转:linux中fork()函数详解
  7. VMware竟然出了一款防火墙
  8. 华为什么手机用的鸿蒙系统,华为2020年全线启用鸿蒙系统,手机、平板依然Android优先...
  9. Elasticsearch——filter过滤查询
  10. 《计算机网络》学习笔记 ·001【概述】
  11. python做数据排序,python 实现对数据的排序和绘图
  12. 用python画三角函数
  13. 小米mix2s主板电路图
  14. 网站建设网页设计小技巧分享
  15. Odroid XU4学习笔记
  16. android坐标画图软件下载,地图坐标app下载-地图坐标软件下载v4.8.15 安卓版-西西软件下载...
  17. VAN(大核注意力机制)
  18. 编程实现AdaBoost算法
  19. 2021能源数字化转型白皮书 附下载
  20. java组合_Java组合

热门文章

  1. EXCEL图表:使用excel画坐标轴图
  2. python画空心圆图_OpenCV-Python系列之绘图功能
  3. Spring容器中的Bean是否会被GC呢?
  4. 彻底解决Qt中文乱码
  5. 支持向量机——线性可分支持向量机
  6. 第一步PHP开发环境搭建
  7. C#使用原生方法将文字朗读出来
  8. Python趣味编程 | 看看如何用Python生成素描风格的自拍照,并且加上Logo
  9. 2021-11-10
  10. Oracle数据库中的级联查询、级联删除、级联更新操作教程