shell脚本操作mysql

自己一个人去部署了一次系统,其中需要很多测试、环境的安装以及数据的处理,一个很烦的地方就是关于mysql命令行的操作,因为没法装navicat这种东西,就一直系统命令行各种导入导出加上mysql内部各种重复指令,具体也不想回忆了,这次事情就让我去想为什么要那么麻烦呢,因为很多指令其实是一系列连贯的,能不能简单点,我想到了用shell文件实现。
不说了,学习开始

一切mysql命令的基础

mysql -h$hostname -P$port -u$username -p$password -e ""
因为如果你用过shell你会知道,shell控制的并不能控制某个服务的控制台,比如你进去mysql之后的操作并不会被执行;
然后把

学习

新建一个shell文件,sh mysql.sh > a.txt >> b.txt

管道符

">" 添加覆盖
">>" 追加
如果多个命令的shell应使用两个的">>", 因为不然只有最后一步的输出

#!/usr/bin/env bash

HOSTNAME="127.0.0.1"
PORT="3306"
USER="root"
PASSWD="123456"

DBNAME="test0603"
TABLENAME="tabletest"

#drop_sql="drop database IF EXISTS ${DBNAME}"
create_db_sql="create database IF NOT EXISTS ${DBNAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -e  "${create_db_sql}"

#创建表
create_table_sql="create table IF NOT EXISTS ${TABLENAME} (name varchar(20), id int(11) default 0)"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${create_table_sql}"
#插入数据
insert_sql="insert into ${TABLENAME} values('billchen',2)"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e  "${insert_sql}"

#查询
select_sql="select * from ${TABLENAME}"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${select_sql}"

#更新数据
update_sql="update ${TABLENAME} set id=3"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${update_sql}"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${select_sql}"

#删除数据
delete_sql="delete from ${TABLENAME}"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${delete_sql}"
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "${select_sql}"

#导入sql文件
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD $DBNAME < expert.sql
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD $DBNAME < topic.sql
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD $DBNAME < institution.sql

#导出sql文件
mysqldump -h$HOSTNAME -P$PORT -u$USER -p$PASSWD $DBNAME > all.sql
#导出数据库的某个表
mysqldump -h$HOSTNAME -P$PORT -u$USER -p$PASSWD $DBNAME --table $TABLENAME  > table.sql

# 导出数据库(只导结构,不要数据)-d
mysqldump -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -d $DBNAME > nodata_db.sql
# 导出数据库(只导数据,不要结构)-t
mysqldump -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -t $DBNAME > onlydata_db.sql
#转换数据库格式编码
iconv -t utf-8 -c topic.sql > topic_utf8.sql

#修改mysql表的格式
mysql -h$HOSTNAME -P$PORT -u$USER -p$PASSWD -D${DBNAME} -e "alter table $TABLENAME convert to character set utf8mb4;"

发表评论

电子邮件地址不会被公开。