簡體   English   中英

Invoke-Sqlcmd Join 變量作為表

[英]Invoke-Sqlcmd Join variable as table

有沒有辦法將 PS 變量鏈接為 Invoke-Sqlcmd 中的表? 我試過LEFT JOIN $psvar as p on T1.ID=P.ID

我根據@Cpt.Whale 的建議制作了一個 DataTable 來更新腳本。

# Define DataTable Columns
$tbl = New-Object system.Data.DataTable 'tbl_New'
$newcol = New-Object system.Data.DataColumn emplID,([string]); $tbl.columns.add($newcol)
$newcol = New-Object system.Data.DataColumn adGrp,([string]); $tbl.columns.add($newcol)

# Add data from Excel
$exelWkbk = '.\table.xlsx'
$excelQuery = '
        SELECT  F1 as emplID
                ,F2 as pcType
        FROM    [Sheet1$]
'
$queryOutput = Invoke-ExcelQuery $exelWkbk $excelQuery | Select-Object -Skip 1

$queryOutput | ForEach-Object {
    $row = $tbl.NewRow()
    $row.tmplID = ($_.emplID)
    $row.adGrp = ($_.pcType)
    $tbl.Rows.Add($row)
}

# Query SQL Data source joining Excel data
$sqlQuery = "
        USE SQLDATABASE;
        DECLARE @today as date = GETDATE();
        SELECT  emp.USER_ID
                ,wt.HOST
                ,a.pcType as DevicModel
        FROM    workstationTable as wt
                JOIN employeeTable as emp on wt.USER_ID = emp.USER_ID
                JOIN $tbl as a on emp.USER_ID = a.emplID
        WHERE   emp.NAME is not NULL
"
Invoke-Sqlcmd -Query $sqlQuery -ServerInstance 'dbName' |
Out-GridView

Powershell 沒有內置的 function 用於執行不同數據集的 SQL 樣式連接。 您可以將Select-Object計算屬性用於簡單的查找表類型的事情,但我更喜歡使用基於 LINQ 構建的Join-Object模塊:

# Gather both data sources into separate list variables:
$sqlData = Invoke-Sqlcmd -ServerInstance 'dbName' -Query '
  USE SQLDATABASE;
    DECLARE @today as date = GETDATE();
    SELECT  emp.USER_ID,wt.HOST
    FROM    workstationTable as wt
      JOIN  employeeTable as emp on wt.USER_ID = emp.USER_ID
    WHERE   emp.NAME is not NULL'
$excelData = Invoke-ExcelQuery $exelWkbk $excelQuery | Select-Object -Skip 1

# join the lists on a specific property
$joined = Join-Object -Type AllInLeft `
    -Left $sqlData    -LeftJoinProperty  USER_ID `
    -Right $excelData -RightJoinProperty EmplID 

$joined | Out-GridView

或者,由於您已經在使用 Excel,因此文件中的 SQL 數據連接可能是一個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM