batch 指令控制與紀錄ETL流程 sql

SamSam
5 min readJun 18, 2019

--

因為工作關係,要一個人自架BI data support平台。保護公司技術(雖然那個所謂的粗陋技術就是小弟在下本人),小弟僅僅分享與筆記如何使用windows server batch 檔來自動化每天資料ETL的流程與排程schedule。畢竟,小弟每天上班的終極目的,就是看看公司美麗的女同事們

假設存在,若且唯若 XD

以及看自己想看的技術文章。我才沒心情弄公司的瑣事呢!當然啦,你只能無限逼近終極目標而無法達到終極目標。

能把所有必要的工作全都自動化,自己存在的意義只是領薪水...阿不是,是調整架構與設計,才是真功夫

來就把設計概念脫光光讓各位帶出場啦。小司機不用謝我,老司機大家切磋一下。

  1. 初步設計資料流的架構
  2. 初步設計資料流的流程
  3. 測試與紀錄真實資料與壓力測試資料後,資料流的情況
  4. 依據3.的紀錄,設計定案資料流的流程
  5. 依據3., 4. 的紀錄,設計定案資料流的架構
  6. 驗證資料
  7. 設計資料指標(operation index)
  8. 設計資料呈現(dashboard, report, visulization ...)
  9. 自動化
  10. 依據5., 6., 設計監測系統並設定通知機制
  11. 打完收工跟老闆說你要去看網拍(誤)

其他不能說,那就分享一個也是自己查到的batch 功能設定。為何要用batch呢?因為一個人的data support系統很多東西不能花錢啊....

大多數ETL 軟體、工具排程都是要錢而且很貴的你們知道嘛 QQ 他就只是個排程啊大佬....

再來,因為一個人的data support系統,所以我只能先用sql script來控制一切。兩週內要出報表,雖然沒人逼我,小弟自己也要自我激勵。

任何工具的鑽研都是時間成本,與RDB最直接相關的就是SQL了沒有之一。如果data scale 或是架構設計上,RDB可以解決,請愛用看起來不炫的RDB。任何技術只要能夠有效率、有經濟效益的改善商業問題,那這就是好技術。

之前的故事多少都在前面文章裡。這邊純粹講因為排程,我必須得用batch來使用windows server 控制這個batch task 進而跑整個ETL。

上網找了一些解法,我就直接脫了大家應該也等很久了。

小弟採取的是使用list 清單控制SQL script 的方式,這樣我只要調整list,不用再去修改本來就不熟悉且不喜歡碰的batch。

Ubuntu spirit…shhh

Batch 內容

@echo off
rem 資料庫host name
set dbIp=slc-tm1-test
rem DB名稱
set dbName=UBNTBEIT
rem 帳號
set dbUsrAcc= whosyourdaddy
rem 密碼
set dbUsrPwd=iamurdaddy
rem 清單.SQL檔路徑
set dbSqlFilePath=”D:\MyDB\ETL_schedule\ETL_script_list.sql”

rem起始時間log紀錄
FOR /F %%a IN (‘TIME /T’) DO set a=%%a
echo started_ts %date% %a% %time%>>view.log

rem 程式執行
cd %batchFilePath%
sqlcmd -S %dbIp% -d %dbName% -U %dbUsrAcc% -P %dbUsrPwd% -i %dbSqlFilePath% >>view.log

rem結束時間log紀錄

FOR /F %%a IN (‘TIME /T’) DO set a=%%a
echo finished_ts %date% %a% %time%>>view.log
PAUSE

@echo on

list.sql內容

:r D:\MyDB\ETL_schedule\Myfolder\test001.sql

test001.sql 內容

select ‘who’s your daddy’, getdate();

流程是

batch 控制 list.sql 控制 test001.sql

batch部份有個精髓是log的紀錄。這就不贅述了。大guy 4 這樣,還有一些藏招就讓小弟能繼續騙吃騙喝吧。有興趣一杯無糖綠來騙我吧。

紀錄初衷是因為batch 真的是超級無敵不習慣。

saving all my time for fun

buzz words.

batch sql db data database ETL script automation automatic auto schedule lazy happy setting

--

--

SamSam
SamSam

Written by SamSam

用有限的資料知識探索無限的世界

Responses (1)