因為工作關係,要一個人自架BI data support平台。保護公司技術(雖然那個所謂的粗陋技術就是小弟在下本人),小弟僅僅分享與筆記如何使用windows server batch 檔來自動化每天資料ETL的流程與排程schedule。畢竟,小弟每天上班的終極目的,就是看看公司美麗的女同事們
假設存在,若且唯若 XD
以及看自己想看的技術文章。我才沒心情弄公司的瑣事呢!當然啦,你只能無限逼近終極目標而無法達到終極目標。
能把所有必要的工作全都自動化,自己存在的意義只是領薪水...阿不是,是調整架構與設計,才是真功夫
來就把設計概念脫光光讓各位帶出場啦。小司機不用謝我,老司機大家切磋一下。
- 初步設計資料流的架構
- 初步設計資料流的流程
- 測試與紀錄真實資料與壓力測試資料後,資料流的情況
- 依據3.的紀錄,設計定案資料流的流程
- 依據3., 4. 的紀錄,設計定案資料流的架構
- 驗證資料
- 設計資料指標(operation index)
- 設計資料呈現(dashboard, report, visulization ...)
- 自動化
- 依據5., 6., 設計監測系統並設定通知機制
- 打完收工跟老闆說你要去看網拍(誤)
其他不能說,那就分享一個也是自己查到的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.logrem 程式執行
cd %batchFilePath%
sqlcmd -S %dbIp% -d %dbName% -U %dbUsrAcc% -P %dbUsrPwd% -i %dbSqlFilePath% >>view.logrem結束時間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 真的是超級無敵不習慣。
—
buzz words.
batch sql db data database ETL script automation automatic auto schedule lazy happy setting