iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

上回我們使用了Try-Catch的方法來處理例外問題,這能減少我們後續發生錯誤的調查時間成本,不過談到時間成本,我們前面在設置的情境時,對於資料來源(.sql腳本)、檔案路徑以及目標(本機資料庫)都是寫成HardCode(將參數以常數方式呈現),這讓我們後續要用作調整時,都必須將每個位置作修改,這會花上我們大量的時間,並且有出錯的可能性。


環境變數

接下來嘗試在我們的命令列腳本中加入環境變數,建立變數規則如下,詳細請點選連結

${Variable} = value 

現在我們假設有五個資料庫中需要寫入相同的腳本,我們先寫出最原始的程式碼:

sqlcmd -S . -d One -i C:\temp\FirstDataBase.sql
sqlcmd -S . -d Two -i C:\temp\FirstDataBase.sql
sqlcmd -S . -d Three -i C:\temp\FirstDataBase.sql
sqlcmd -S . -d Four -i C:\temp\FirstDataBase.sql
sqlcmd -S . -d Five -i C:\temp\FirstDataBase.sql

接下來我們建立一些我們在日後可能會需要異動的環境變數來取代命令列裡的HardCode,如下:

$SERVER = '.'
$FILENAME = 'FirstDataBase.sql'
$PATH = 'C:\temp' 
$DATABASE_LIST = 'One','Two','Three','Four','Five' 

而我們的命令列在建立變數之後便能使用,語法如下:

$SERVER = '.'
$FILENAME = 'FirstDataBase.sql'
$PATH = "C:\temp" 
$DATABASE_LIST = 'One','Two','Three','Four','Five' 

sqlcmd -S $SERVER -d $DATABASE_LIST[0] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[1] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[2] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[3] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[4] -i $PATH\$FILENAME 

成功執行後便能將腳本資料寫進我們一開始設定好的資料庫清單,而我們之後在調整時,我們就只需要針對我們建立的變數調整即可,不過使用上述方法後整體程式碼的數量不減反增,後續我們再思考如何優化。
更多小知識,我們下次見~~


上一篇
DAY 8 :PowerShell發生例外及例外處理
下一篇
DAY 10 :PowerShell 利用迴圈搭配環境變數使腳本輕量化
系列文
沒有厲害的頭腦,也能利用腳本實現懶人寫程式的夢想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言