分享一个简单的shell脚本

  因为最近经常在PLSQL上导入导出表结构,全量导出,部分导入,就得一张表一张表的搜索复制粘贴,效率贼低,于是乎就有了写shell脚本的想法。

  直接说步骤吧,1.把需要导入的表名放入tab.txt;2.把导出的sql文件放到相同路径;3.把该脚本放到相同路径执行即可

  在下shell菜鸟,有需要写一些简单的脚本可以联系我秋秋786824023,无偿。注意是简单的o.O

#!/bin/bash
# create by LJZ on 2019/7/8
# 功能:从获取指定列表的表结构
# 参数:$1 源文件名
# 步骤:
#   1.当前路径下准备表列表tab.txt
#   2.执行 sh get_tab_desc.sh RDS_rwa_tables_20190705.sql
#   3.当前路径下会生成表结构文件tab_desc.sql
# 注意:
#   1.如果带用户名,则需要改下程序!create table改为create table user.   或者把文件中的用户全部去掉
#   2.源文件的文件类型如果是dos,则需要转成unix   set ff=unix
#

file_name=$1
#输入表文件名
in_file="tab.txt"
#输出表结构文件名
out_file="tab_desc.sql"
sum=`cat $in_file | wc -l`
succeed=0
failed=0

function mk(){
	start_num=`cat -n $file_name | grep -i "create table $1$" | awk '{print $1}'`
	if [ X$start_num == X"" ];then
		echo "ERROR:${1}没找到create语句,生成失败!"
		failed=$(($failed+1))
		return 0
	fi
	cut_num=`cat -n $file_name | tail -n +$start_num | grep -i "create table" | awk '{print $1}' | sed -n '2p'`
	if [ "X$cut_num" == "X" ];then
		cut_num=`cat $file_name | wc -l`
	fi
	end_num=`cat -n $file_name | head -n +$cut_num | tail -n +$start_num | grep ";" | tail -n -1 | awk '{print $1}'`
	head -n +$end_num $file_name | tail -n +$start_num >> $out_file
	succeed=$((succeed+1))
	return 0
}
if [ ! -f "$file_name" ];then
	echo `pwd`"/${file_name}没有准备好!"
	exit 0
fi
if [ ! -f "$in_file" ];then
	echo `pwd`"/${in_file}没有准备好!"
	exit 0
fi
echo "清空${out_file}文件!"
echo "开始生成!"
> $out_file
for tab in `cat $in_file`
do
	mk $tab
done
echo "总计:${sum}条,成功:${succeed}条,失败:${failed}条."
echo "生成文件:"`pwd`"/$out_file"
echo "运行结束!"
exit 0

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值