上回我們在mssql-scripter的選項中,挑選了符合我們實際需求的選項(與SSMS產生指令碼功能為基準),不過在mssql-scripter命令列中,我們的選定的物件是使用hardcode,即使我們用環境變數來取代,依然必須先手動輸入物件內容,今天我們來嘗試透過其他方式來匯入我們的物件。
首先我選定csv檔案作為傳入我們所需要的物件檔案,這裡先嘗試使用命令列來產生檔案作為檔案來源,語法如下:
New-Item {FilePath} -ItemType File
New-Item c:\temp\test.csv -ItemType File
接著我們在.csv檔案中以表格的方式加入一些資料,如下:
接著利用命令列去讀取.csv的內容,語法如下:
Get-Content {FilePath}
Get-Content c:\temp\test.csv
讀取之後得到以下結果:
One
Two
Three
這樣看來,資料在.csv的直行讀取出來後會變成陣列,我們試試看用環境變數去存取並執行看看得到的結果,如下:
$TEST = Get-Content c:\temp\test.csv
$TEST
$TEST[0]
$TEST[1]
$TEST[2]
One
Two
Three
One
Two
Three
看起來確實如我們預期,因此我們嘗試將上回使用的mssql-scripter語法中物件的名稱寫進.csv檔案,並改寫如下:
$TEST = Get-Content c:\temp\test.csv
mssql-scripter -S . -d FirstDataBase --schema-and-data --include-objects $TEST[0] $TEST[1] --exclude-use-database --display-progress -f C:\temp\FirstDataBase_scripter.sql
執行成功後,我們就能得到相同的.sql腳本檔案,而命令列中的物件名稱來源則來自不同的外部檔案(.csv檔案)。
更多小知識,我們下次見~~