Shell脚本导出导入MySQL建表语句
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建表语句相关推荐
- 基于表的数据字典构造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 ...
- python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据
""" 根据excel在mysql中建表(表名为文件名,字段为csv中的header,默认所有字段为varchar,如需更改,在数据库中更改即可),并插入数据 " ...
- mysql 建表语句 stored as_Druid 解析Hive建表语句解析报错
Druid 版本: com.alibaba druid-spring-boot-starter 1.2.3 Hive 建表SQL create table ads_data.sale_detail_o ...
- 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 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创 ...
- shel脚本mysql锁表_centos下shell脚本kill掉mysql锁表进程【笔记】
前几天发现服务器上的mysql出现锁表了,show processlist后发现好多都是因为写进session才锁表的,看到这个想起了会不会是硬盘空间不够了,马上查看了服务器硬盘空间,发现都100%了 ...
- navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...
[斗蟹攻略]Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法. Navic ...
- mysql json建表_json数据自动生成MySQL建表语句
#_*_coding:utf-8_*_ #author: cike #date: 18-9-13 import pymysql.cursors connection = pymysql.connect ...
最新文章
- 枚举类型是怎样定义的?有什么用途?_为什么受伤后会留疤?疤分那些类型?留疤后该怎样处理?...
- mysql排序分页乱的_Mysql 排序分页混乱
- goland 交叉生成linux文件
- parseInt和parseFloat(转换成数字,提取成数字)?
- object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded
- 转:linux中fork()函数详解
- VMware竟然出了一款防火墙
- 华为什么手机用的鸿蒙系统,华为2020年全线启用鸿蒙系统,手机、平板依然Android优先...
- Elasticsearch——filter过滤查询
- 《计算机网络》学习笔记 ·001【概述】
- python做数据排序,python 实现对数据的排序和绘图
- 用python画三角函数
- 小米mix2s主板电路图
- 网站建设网页设计小技巧分享
- Odroid XU4学习笔记
- android坐标画图软件下载,地图坐标app下载-地图坐标软件下载v4.8.15 安卓版-西西软件下载...
- VAN(大核注意力机制)
- 编程实现AdaBoost算法
- 2021能源数字化转型白皮书 附下载
- java组合_Java组合