SQL Server PowerShell SQL查询问题

gj3fmq9x  于 2023-01-20  发布在  Shell
关注(0)|答案(1)|浏览(129)

我正在阅读一个CSV列,并使用SQL Server Table1列检查它,然后像这样更新table2列,但我不确定为什么它会工作。
我得到的所有行都是99,尽管我的CSV列并不全是空的,并且该值与table1中的值完全匹配。

$CSVImport = Import-CSV $CSVFileName

    ForEach ($CSVLine in $CSVImport) {
    
        $CSVEvent = $CSVLine.Event
        $CSVName = $CSVLine.Name 

        if($CSVEvent -eq ''){
            $EventID = '99'
        }else{
            $EventID = "SELECT Convert(int,Event_Id) From Table1 WHERE Event_name = '$CSVEvent'"
            Invoke-Sqlcmd -Query $EventID
        }

        $query = "INSERT INTO Table2(Event_Id, Name) VALUES($EventID, '$CSVName');"
        Invoke-Sqlcmd -Query $query
      }
    }
h5qlskok

h5qlskok1#

Invoke-Sqlcmd -Query $EventID

它 * 输出 * 查询结果,而不是 * 将其捕获到变量中 *。如果没有将输出分配给变量、重定向或通过管道发送,它 * 将打印到显示器 *。
我假设目的是将Invoke-Sqlcmd的结果以整数形式存储在变量$EventID中:

$EventID = Invoke-Sqlcmd -Query $EventID | ForEach-Object { $_[0] }

但是,请注意,如果查询返回 * 多 * 行,则$EventID将是整数的 * 数组 *。

相关问题