shell-生成mysql数据库数据表与数据备份

设计需求

使用shell 脚本向mysql数据库写入数据,并备份mysql数据。

需求拆解

  • 设计用shell连接Mysql数据库的代码模块
  • 设计用shell创建Mysql数据库与数据表的代码模块
  • 设计用shell读写数据Mysql数据文本的代码模块
  • 设计用shell备份mysql数据库数据的代码模块

代码实现

#!/bin/bash

# 声明属性变量
user="root"
password="######" #需要输入实际的数据密码
host="localhost"

# 读入数据库名称
echo "pls input a database name : "
read db_name

# 读入数据表名称
echo "pls input a datatable name : "
read tab_name

# 声明数据文件存放变量
sqlfile_dir="/Users/hadoop/shellHome/shellScripts/TextDataToInsertMysqlDataTab.txt"

# 执行数据库的创建
mysql -h"${host}" -u"${user}" -p"${password}" <<EOF 2> /dev/null 
create database ${db_name};
EOF

# 判定读入的数据库是否创建成功
existsdb_code=$([ $? -eq 0 ] && echo "0" || echo "1")  ##0:数据库创建成功,1:数据库已经存在
if [[ ${existsdb_code} == '0' ]];then
    echo ">>>数据库:${db_name}创建成功" 
else
    echo ">>>数据库:${db_name}已经存在"
fi

# 执行数据表的创建
mysql -h"${host}" -u"${user}" -p"${password}" -D${db_name} <<EOF 2> /dev/null
create table $tab_name (
name varchar(50) not null,
sex varchar(50) not null,
height double,
weight double,
nationality varchar(100)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
EOF

# 判定读入的数据表是否创建成功
existstab_code=$([ $? -eq 0 ] && echo "0" || echo "1")  ##0:数据表创建成功,1:数据表已经存在
if [[ ${existstab_code} == '0' ]];then
    echo ">>>数据表:${tab_name}创建成功"
else
    echo ">>>数据表:${tab_name}已存在"
fi

# 检查新建的数据库or数据表是否已经创建成功
if [[ ${existstab_code} == '1' ]];then
    echo ">>>数据库与数据表已经存在,数据统计: "
    mysql -h"$host" -u"$user" -p"$password"  <<EOF 2> /dev/null
    select count(*) from $db_name.$tab_name;
EOF
else 
    # 读取数据与写入数据
    while read line 
    do 
        # 读取数据
        sql_row=($(echo ${line} | tr ' ' ','))

        # 写入数据
        mysql -h"${host}" -u"${user}" -p"${password}" -D"${db_name}" <<EOF 2> /dev/null
        insert into ${tab_name} values(${sql_row});
EOF
    done < ${sqlfile_dir}

fi

# 判定数据读取与写入是否已经成功
datawr_code=$([ $? -eq 0 ] && echo "0" || echo "1")
if [[ ${existstab_code} == '0' ]];then
    echo ">>>写入数据后的统计数据: "
    mysql -h"$host" -u"$user" -p"$password"  <<EOF 2> /dev/null
    select count(*) from $db_name.$tab_name;
EOF
else 
    echo ">>>数据未写入数据表"
fi

# 备份数据库中的数据
echo ">>>备份数据"

# 数据时间
postfix_file=$(date +'%s')

# 数据备份文件
sqlback_dir="/Users/hadoop/shellHome/shellScripts/MysqlBackup_${postfix_file}.sql"

# 执行数据备份
mysqldump -h"$host" -u"$user" -p"$password" --lock-all-tables --databases ${db_name}  > "${sqlback_dir}" 2> /dev/null

# 检查Mysql文件是否备份成功
if [ -f ${sqlback_dir} ];then 
    echo "There is a MysqlDumpFile for backup: ${postfix_file}"
else 
    echo "There is no a Mysql backup file and time is : ${postfix_file}"
fi

 

开发说明

数据是否需要写入的判定:在开发代码的时候,需要考虑输入的数据库与数据表是否存在,若存在,则不写入数据;若不存在,则新建数据库与数据表,并写入数据。

shell与Mysql常用的命令

1.登录Mysql数据库

mysql -h"${host}" -u"${user}" -p"${password}"

2.使用Mysql数据库

mysql -h"${host}" -u"${user}" -p"${password}" -D"${db_name}"

3.备份数据库数据

mysqldump -h"$host" -u"$user" -p"$password" --lock-all-tables --databases ${db_name} > "${sqlback_dir}"

参考文档

感谢作者的辛苦付出,备份Mysql数据库的代码对我有很大的启发!

shell备份mysql数据库 · 笔记 · 看云

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值