mysql导入初始化脚本_一个清空数据库并初始化的脚本

经常要清空数据库,于是写了一个小脚本,还是学到很多东西.

1.保留数据表结构,只删除所有表数据

方法1:导出一个没有数据的数据库,再drop原来的数据库,create 一个新的(空的,没有表结构),再source一下之前导出的没有数据的sql

mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} --no-data >villadb-nodata.sql

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} -e "drop database ${DATABASE}"

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -e "create database ${DATABASE}"

学习点:

1.mysql -e cmd 可以用shell操作mysql,不在mysql提示符下操作,非交互式,适合嵌入shell脚本

2.shell 单引号和双引号的区别,单引号属于强引用,不对引号内任何特殊字符转义,只当普通字符.双引号属于弱引用,会对括起来的特殊字符做处理.如$,>等.上面的例子用到${DATABASE},要用双引号,才能保留${}的特殊意义,即传递一个变量,而不是简单字符串.

3.mysqldump --no-data 参数(跟-d 一样),表示只导出数据库表结构,不导出数据.用-t则表示只导出数据,不导出表结构.

4.删除数据库有3种方法:

drop database ${DATABASE}:会删除整个数据库表结构,数据,和

方法2:

调试时用到的技巧

1.shell脚本在开头加上"set -x"表示调试模式,会把每句命令都打印出来,再打印每句命令的执行结果

2.vim中批量注释.用vim命令打开文件

方法1:块操作模式

适合连续的行注释,光标移动到要注释的第一行,按ctrl+v进入块模式,按方向键向下,直到你要注释的最后一行,按大写的i,注意大写的哦,输入#,再按2次Esc键,就看到选中的行首都增加了一个#.

取消注释:在块模式下选中要取消注释的行,按一下"d",即可

方法2:替换命令

按Esc进入命令模式,输入":set nu",显示行号;再按一下Esc,输入":1,$ s/^/#/g" 表示从1到最后一行,每个行首都增加# . 其中"1,$" 表示从1到最后一行,可更改为实际的起始行和结束行

取消注释:在命令行模式,输入":1,$ s/^#//g".

附:完整脚本

#!/usr/bin/bash

set -x

HOSTNAME=‘127.0.0.1‘

USERNAME=‘root‘

PASSWORD=‘engine‘

DATABASE=‘villadb‘

result()

{

if [ $? -eq 0 ];then

echo -e "\033[47;32m ----------- $1 succeed! ---------- \033[0m"

else

echo -e "\033[47;31m ----------- $1 failed! ----------- \033[0m"

fi

}

echo -e "\033[47;34m ------------ step 1: dump a no-data sql of villadb ------------- \033[0m"

mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} --no-data >villadb-nodata.sql

result step1

echo -e "\033[47;34m ------------ step 2: dump important config like VDC,ServiceOffering,etc ------------- \033[0m"

mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} VdcType ServiceOffering TotalTemplate VDC Configuration > config.sql

result step2

echo -e "\033[47;34m ------------ step 3: drop villadb ------------- \033[0m"

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} -e ‘drop database villadb‘

result step3

echo -e "\033[47;34m ------------ step 4: create a new villadb ------------- \033[0m"

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -e ‘create database villadb IF NOT EXISTS villadb‘

result step4

echo -e "\033[47;34m ------------ step 5: import the backup table-structure ------------- \033[0m"

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} -e ‘source /home/clouder/userful-sql/villadb-nodata.sql‘

result step5

echo -e "\033[47;34m ------------ step 6: import the backup config ------------- \033[0m"

mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} ${DATABASE} -e ‘source /home/clouder/userful-sql/config.sql‘

result step6

原文:https://www.cnblogs.com/xiaozhuangAna/p/10348146.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值