#!/bin/bash
#Function:unload mysql data
#Version:V1.0
#############定义变量################
user=xxx
database=xxxxxx
password=xxxxxxxxx
date=`date +%Y%m%d%H%M%S`
file_directory=/home/ebsql/mysql/mysql-files/
############打印用户选项#############
function menu
{
echo "########请选择导出类型########"
echo "1.导出单表数据(不包含表结构)"
echo "2.导出单表结构(不包含表数据) "
echo "3.导出单表(包含表数据及结构)"
echo "4.导出全库表结构(不包含表数据) "
echo "5.导出全库(包含表数据)"
echo "6.导出单个存储过程"
echo "7.导出全库存储过程"
echo "q.退出脚本"
echo "###############################"
}
#############选择导出存储过程################
function user_input
{
read -p "请输入导出类型【输入1-7或q退出】:" input
}
#############选择导出表################
function get_table
{
read -p "请输入导出表:" table
}
#############选择导出存储过程################
function get_procedure
{
read -p "请输入存储过程名称:" procedure
}
#############判断表导出是否成功##########
function check_unload_table_success
{
if [ $? != 0 ]
then
echo "导出异常,请检查接入库及表名是否正常!"
else
echo "$table表导出成功,请在$file_directory下查看!"
exit 1
fi
}
#############判断库出是否成功##########
function check_unload_database_success
{
if [ $? != 0 ]
then
echo "导出异常,请检查接入库是否正常!"
else
echo "$database库导出成功,请在$file_directory下查看!"
exit 1
fi
}
#############判断存储过程导出是否成功##########
function check_unload_procedure_success
{
if [ $? != 0 ]
then
echo "导出异常,请检查存储过程名称是否正常!"
else
echo "存储过程导出成功,请在$file_directory下查看!"
exit 1
fi
}
#############导出单表数据##############
function unload_single_table_data
{
mysql -u$user -p${password} 2>/dev/null <<EOF
use $database
select * from $table into outfile '${file_directory}${table}_data_${date}.unl' fields terminated by '|';
exit
EOF
check_unload_table_success
}
######导出单表结构(不包含表数据)#######
function unload_single_table_structure
{
mysqldump -u$user -p$password -d $database $table > ${file_directory}${table}_structure.${date}.sql 2>/dev/null
check_unload_table_success
}
#####导出单表(包含表数据及结构)##########
function unload_single_table_all
{
mysqldump -u$user -p$password $database $table > ${file_directory}${table}_all.${date}.sql 2>/dev/null
check_unload_table_success
}
############导出全库表结构(不包含表数据)###############
function unload_database_structure
{
mysqldump -u$user -p$password -d $database > ${file_directory}${database}_structure.${date}.sql 2>/dev/null
}
############导出全库(包含表数据)#################
function unload_database
{
mysqldump -u $user -p$password --routines --events $database --single-transaction --set-gtid-purged=OFF >${file_directory}${database}_all.${date}.sql 2>/dev/null
}
############导出单个存储过程#################
function unload_single_procedure
{
mysql -u$user -p$password -D $database -e "show create procedure ${procedure} \G" > ${file_directory}${procedure}.${date}.sql 2>/dev/null
}
############导出全库存储过程#################
function unload_database_procedure
{
mysqldump -u$user -p$password -ntd -R --triggers=false $database > ${file_directory}${database}_procedure.${date}.sql 2>/dev/null
}
for i in {1..10}
do
menu
user_input
case $input in
1 )
get_table
unload_single_table_data
;;
2 )
get_table
unload_single_table_structure
;;
3 )
get_table
unload_single_table_all
;;
4 )
unload_database_structure
check_unload_database_success
;;
5 )
unload_database
check_unload_database_success
;;
6 )
get_procedure
unload_single_procedure
check_unload_procedure_success
;;
7 )
unload_database_procedure
check_unload_procedure_success
;;
q )
echo "感谢使用此脚本,已退出!"
break
;;
* )
echo "输入有误,请重新输入!"
;;
esac
if [ $i -eq 10 ];then
echo "已经到达输入的最大次数,脚本退出;"
fi
done
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




