日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

BAT批处理脚本结合SQL应用案例

發布時間:2024/9/27 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BAT批处理脚本结合SQL应用案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ?BAT批處理腳本結合SQL應用案例

本文是BAT(批處理腳本)結合SQL的應用,腳本結合了OSQL(可執行Transact-SQL語句 )、BCP(執行數據導入導出的工具)、BLAT(命令行發郵件的工具)。

需求介紹

通過BAT編寫腳本實現源數據核對、增量數據入庫、數據校驗、郵件通知功能。支持按照日、周、月的方式對數據進行手動更新。

關于源數據的說明:????

? ? 1? ? 當前執行的數據庫環境是SQL Server
????2????如果Day、Week、Month文件夾里沒有源數據則郵件通知:無源文件
????3????如果Day、Week、Month文件夾里有源數據則1 日志文件存在?刪除:創建 2 Loop表名(利用導入前后表記錄差,對比源文件行數判斷導入成功并郵件)
????4? ? 如果源文件有空行,也會認定失敗

腳本明細

當前演示的為日任務腳本明細,周和月的類似。

@echo off setlocal enabledelayedexpansion set Wk_DIR=D:\DataCollect set Day_Flag=%date:~0,4%-%date:~5,2%-%date:~8,2% set Week_Flag=%date:~11,2% set Month_Flag=%date:~8,2% set Log_File=Get_DataAns_%date:~0,4%%date:~5,2%%date:~8,2%.log set BCPLog_File=ErrBCPLog_File_%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%-%time-~3,2%-%time:~6,2% set Server_Name="127.0.0.1" set Db_Name="Testing" set User_Name="sa" set Password="sasa" set DayTables=Devices_test,Devices_test_2 set WeekTables=Devices_test_2,Devices_test set MonthTables=Devices_test_2,Devices_test set EmailSendTo=liangshen@realIT.com set EmailSendFrom=liangshen@realIT.com set EmailSendToCc=liangshen@realIT.com set EmailSubject=DataAns數據導入日志_%Day_Flag% set EmailSten=大家好,我是沈亮.REM 1 Day(日任務) if exist %Wk_DIR%\Day\%Day_Flag% ( cd %Wk_DIR%\Day\%Day_Flag% if exist %Log_File% (del /F /Q %Log_File%) echo %date% >> %Wk_DIR%\Day\%Day_Flag%\%Log_File% cd %Wk_DIR%\Day\%Day_Flag% if exist Email.log (del /F /Q Email.log ) echo %EmailSten%如下導入的是日數據: >> Email.logecho.>> Email.logfor %%x in (%DayTables%) do ( echo 表%%x的導入情況: >> Email.logosql -n -w 2000 -S %Server_Name% -U%User_Name% -P%Password% -h-1 -d %Db_Name% -Q "SET NOCOUNT ON SELECT COUNT(1) FROM %%x" -o before.txtset /p BeforeRow=<before.txt echo !BeforeRow! >> EmailTmp.log del EmailTmp.log del before.txt echo. >> %Wk_DIR%\Day\%Day_Flag%\%Log_File% & echo %%x >> %Wk_DIR%\Day\%Day_Flag%\%Log_File%BCP %Db_Name%.dbo.%%x in %Wk_DIR%\Day\%Day_Flag%\%%x.txt -f %Wk_DIR%\Fmt\%%x.Fmt>>%Wk_DIR%\Day\%Day_Flag%\%Log_File% -e %Wk_DIR%\Day\Error.log 2>>&1 -S %Server_Name% -U%User_Name% -P%Password% -E FOR %%A IN (%Wk_DIR%\Day\Error.log) DO set filesize=%%~zAif !filesize! NEQ 0 ( echo 表%%x@%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%.%time:~9,2% >> %Wk_DIR%\Day\BCPError.log echo.>>%Wk_DIR%\Day\BCPError.logtype %Wk_DIR%\Day\Error.log >> %Wk_DIR%\Day\BCPError.logecho.>>%Wk_DIR%\Day\BCPError.log)del %Wk_DIR%\Day\Error.logosql -n -w 2000 -S %Server_Name% -U%User_Name% -P%Password% -h-1 -d %Db_Name% -Q "SET NOCOUNT ON SELECT COUNT(1) FROM %%x" -o after.txtset /p AfterRow=<after.txt echo !AfterRow! >> EmailTmp.logdel EmailTmp.logdel after.txt cd %Wk_DIR%\Day\%Day_Flag%for /f "tokens=1 delims=:" %%i in ('findstr /n .* %%x.txt') do set Line=%%i echo !Line! >> EmailTmp.logdel EmailTmp.logset /a Diff=!AfterRow! - !BeforeRow! if /i !Diff! NEQ !Line! ( echo !Line!行源數據!Diff!行導入 狀態:失敗>> Email.log ) else ( echo !Line!行源數據!Diff!行導入 狀態:成功>> Email.log ) echo.>> Email.log )echo Best Regards! >> Email.logecho Liang >> Email.logcd %Wk_DIR%blat.exe %Wk_DIR%\Day\%Day_Flag%\Email.log -server mail.realIT.com -f %EmailSendFrom% -t %EmailSendTo% -s "%EmailSubject%" -c %EmailSendToCc% -charset gbk ) else (cd %Wk_DIR%\Dayif exist Email.log (del /F /Q Email.log ) echo %EmailSten%>> Email.log echo.>> Email.log echo 沒有日數據>> Email.logecho.>> Email.log echo Best Regards! >> Email.logecho Liang >> Email.logcd %Wk_DIR%blat.exe %Wk_DIR%\Day\Email.log -server mail.realIT.com -f %EmailSendFrom% -t %EmailSendTo% -s "%EmailSubject%" -c %EmailSendToCc% -charset gbk)

總結

以上是生活随笔為你收集整理的BAT批处理脚本结合SQL应用案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。