51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2817|回复: 0
打印 上一主题 下一主题

[原创] 检查重复的SQL脚本

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-16 17:22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位同行,大家好!好久没来51testing了,竟然把用户名都忘记了,今天又重新注册。

我在福州一家公司主要从事基于DELPHI+SQL的管理软件测试工作,开发人员提交测试的SQL脚本出现重复创建表、视图、过程是开发人员经常犯的错误之一,脚本很庞大时用普通的查看方法肯定是看不出来的,有时甚至一段重复的过程出现3-4次。于是花了些时间写了个批处理希望与大家交流。
@echo off
:: Code by Jarkun 2009-6-5 CMD@XP
title Search
setlocal enabledelayedexpansion

:star
cls
color 0a
echo.
echo                         - 查找重复脚本( 按"q"退出 ) -
echo                             (把文本直接拖入窗口)
echo.
set num=0
set/p filepath=   请输入文本地址:
if /i "!filepath!"=="q" exit
if /i "!filepath!"=="" goto star
echo.
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*PROCEDURE" %filepath%') do (
for /f "tokens=1* delims=( " %%a in ("%%i") do (
   set /a %%a+=1
   set str=%%a   ---  重复 !%%a! 次  
   if "!%%a!" GTR "1" if not "!str!"=="" echo    !str!         &set /a num+=1
)
)
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*VIEW" %filepath%') do (
for /f "tokens=1* delims=( " %%a in ("%%i") do (
   set /a %%a+=1
   set str=%%a   ---  重复 !%%a! 次  
   if "!%%a!" GTR "1" if not "!str!"=="" echo    !str!         &set /a num+=1
)
)
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*TABLE" %filepath%') do (
for /f "tokens=1* delims=( " %%a in ("%%i") do (
   set /a %%a+=1
   set str=%%a   ---  重复 !%%a! 次  
   if "!%%a!" GTR "1" if not "!str!"=="" echo    !str!         &set /a num+=1
)
)
echo.
echo    结果 !num!  [ 按"o"输出到文本;按"q"退出! ]

:cho
set/p shr=   请选择:
if /i "!shr!"=="q" exit
if /i "!shr!"=="o" goto out
IF ERRORLEVEL 0 goto cho

ut
set num2=0
set num=0
echo        ----------------------------------------------- >>分析结果.txt
echo                          ★分析结果                        >>分析结果.txt
echo        ----------------------------------------------- >>分析结果.txt
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*PROCEDURE" %filepath%') do echo %%i >>SearchTemp
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*VIEW" %filepath%') do echo %%i >>SearchTemp
for /f "tokens=3" %%i in ('findstr /ir "CREATE.*TABLE" %filepath%') do echo %%i >>SearchTemp
for /f "tokens=1* delims=( " %%a in ('sort SearchTemp') do (
   set str=                           ---  重复 !%%a! 次
   if not defined _%%a (
        echo %%a >>分析结果.txt
        set /a num2+=1
        if "!%%a!" GTR "1" if not "!str!"==""  echo    !str!        >>分析结果.txt  &set /a num+=1
   )
   set "_%%a=%%a"
)
echo.                                                >>分析结果.txt
echo        ---------------------------------------        >>分析结果.txt
echo        合计:!num2! 重复:!num!                >>分析结果.txt
echo.                                                >>分析结果.txt
del SearchTemp
goto :eof
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 19:27 , Processed in 0.065688 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表