工作上時常有些資料轉換小需求 , 但一時之間又不好搞定 , 多半會透過各種亂七八糟的方式轉換 , 無聊看看 powershell 的功能裡面可以連接 sql server 操作一些這種雜亂的工作!
如果需要直接參考原生的在 sql server 上操作 json 可以看這個老外
首先需要 安裝 SQL Server PowerShell 模組
特別注意需要安裝 powershell 5.x 以上版本
如果是 win7 選這個 Win7AndW2K8R2-KB3191566-x64.zip ,可以參考這篇講得比較詳細
搞定後又遇到一堆地雷
Install-Module : 需要 NuGet 提供者才能與 NuGet 型存放庫互動。請確定已安裝 ‘2.8.5.201’ 或更新的 NuGet 提供者
後來發現要照這篇老外的解法才 ok
最主要就是要用 admin 執行以下指令
1 | [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 |
也可以考慮順便安裝 gsudo
接著就可以進入正題
1 | Install-Module -Name SqlServer -AllowClobber -Scope CurrentUser |
接著匯入模組
1 | Import-Module SqlServer |
然後設定路徑想到的位置 , 並且可以用 ls cd 這類指令看目前的物件如 table , view
若設定過程中機器遇到權限問題 SQL Server Error 18456 可以參考這篇解答
1 | Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases |
最後透過類似以下指令快篩內容並且轉換為 json 輸出 , 以前很多很阿雜的工作瞬間快速搞定!
1 | $customers = Invoke-Sqlcmd "select * from customers" |
後來發現一個很智障的問題就是沒在 localdb 上跑過,原來 LocalDB 要特別用括號把圓括號特別框起來
1 | Import-Module SqlServer |
有閒暇時間其實還可以安裝個 vscode powershell 整合比起在 powershell ise 上陽春的功能還好用太多