从mysql备份文件中得到某一张表的数据

有时候,想从备份sql中查看某张表的数据,常规的做法是先恢复整库再找那张表,太浪费时间了。于是就写了个bash脚本从整库的备份文件中提取某张表。
./export_one_table_from_backup_file.sh '\`user\`' 'backup.sql'"

#!/bin/bash
if [ $# -lt 2 ]; then
echo "usage: ./export_one_table_from_backup_file.sh'\`table_name\`' 'backup_sql_file'"
echo "Example: ./export_one_table_from_backup_file.sh '\`user\`' 'backup.sql'"
exit
fi
tb_name=$1
sql_file=$2
if [ ! -f "$sql_file" ]
then
echo $sql_file not exist,shell exit
exit
else
echo $sql_file is found
echo start check table: $1 from $2
fi
new_sql_name=`echo $tb_name|sed -e 's/\`//g'`
echo ${new_sql_name}
new_sql_file_name=${new_sql_name}_`date +%Y%m%d-%H-%M-%S`.sql
start_line=`grep -n "$tb_name" $sql_file |awk -F':' '{print $1}'|head -n 1`
end_line=`grep -n "$tb_name" $sql_file |awk -F':' '{print $1}'|tail -n 1`
echo $start_line $end_line
echo 'set foreign_key_checks=0;' > $new_sql_file_name
cat $sql_file |sed -n "${start_line},${end_line}p" >> $new_sql_file_name
echo 'set foreign_key_checks=1;' >> $new_sql_file_name
echo ls $new_sql_file_name

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注