首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用-Sqlcmd连接变量作为表

调用-Sqlcmd连接变量作为表
EN

Stack Overflow用户
提问于 2021-12-10 15:39:27
回答 1查看 168关注 0票数 0

是否有方法将PS变量链接为调用-Sqlcmd中的表?我试过LEFT JOIN $psvar as p on T1.ID=P.ID

我根据DataTable的建议创建了一个@Cpt.Whale,从而更新了脚本。

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 17:15:46

Powershell没有内置函数来执行不同数据集的SQL样式连接。对于简单的查找表类型,您可以使用Select-Object计算的属性,但我更喜欢使用构建在LINQ上的Join-Object模块:

代码语言:javascript
复制
# 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数据连接可能是一个选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70306985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档