工作小脚本(原创)

 新公司需要写pl\sql,日常编码过程中,一些简单而重复的操作耗费了不少时间,由于公司不能向外提交数据,电脑又禁用usb,所以只能通过博客这个中转站获取在家里准备写好的脚本。下面的代码我就不详细解释了,有同样需求的朋友自己研究下,不明白或者有需要改进的地方欢迎发邮件。

字段匹配

$ cat tt1

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 DEPTNO                                    NOT NULL NUMBER(2)

 DNAME                                              VARCHAR2(14)

 LOC                                                VARCHAR2(13)

$ cat tt2

DNAME                             ssss 

$ cat to_verify 

#!/bin/bash

export PATH=/u01/app/oracle/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin

cat /dev/null > result

sed -e '1,3d' -e 's/NOT NULL//g' $1 > tmp1

awk '{if(!s[NR])s[NR]=$1;if(FNR>x)x=NR;a[$1]=$2}END{for(i=1;i<=x;i++)print s[i],a[s[i]]}' tmp1 $2 > result

rm tmp1

$ ./to_verify tt1 tt2

$ cat result 

DEPTNO NUMBER(2)

DNAME ssss

LOC VARCHAR2(13)

利用CAST进行类型转换

$ cat to_cast 

#!/bin/bash

export PATH=/u01/app/oracle/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin

cat /dev/null > result

sed -e 's/NOT NULL//g'  -e "s/^ \([A-Z_]*[A-Z]\).*(\([0-9]*\))/CAST(NVL(\1,' ') AS CHAR(\2))/g" -e "s/ \([A-Z_]*[A-Z]\).*DATE/TO_DATE(\1,'YYYY-MM-DD')/g" $1 > result

echo "#################################EXAMPLE###############################" >> result

echo "cast(nvl(max(sal),'1') as char(23))"  >> result

echo "cast(nvl(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),' ') as char(23))" >> result

echo "########################################################################" >> result

$ ./to_cast tt1

$ cat result 

CAST(NVL(DEPTNO,' ') AS CHAR(2))

CAST(NVL(DNAME,' ') AS CHAR(14))

CAST(NVL(LOC,' ') AS CHAR(13))

#################################EXAMPLE###############################

cast(nvl(max(sal),'1') as char(23))

cast(nvl(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),' ') as char(23))

#######################################################################

 

..................................持续更新中....................................

 

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值