Powershell:有条件地更改管道中的对象

Powershell:有条件地更改管道中的对象

我正在将 CSV 转换为 SQL 插入,并且有一个可以为空的文本列,如果它不为 NULL,我需要将其括起来。我会为转换编写类似以下内容的内容:

Import-Csv data.csv | foreach { "INSERT INTO TABLE_NAME (COL1,COL2) VALUES ($($_.COL1),$($_.COL2));" >> inserts.sql }

但我不知道如何在管道中添加一个额外的层来查看 COL2 是否不等于“NULL”,并在这种情况下引用它。我如何实现这种行为?

答案1

在 cmdlet 的代码块中,foreach-object您可以有多个语句,例如:

Import-Csv data.csv | 
foreach {
  if ($_.COL1 -ne $null) {
    $c1 = "'$($_.COL1)'"
  } else {
    $c1 = $_.COL1
  }
  "INSERT INTO TABLE_NAME (COL1,COL2) VALUES ($c1,$($_.COL2));" >> inserts.sql
}

相关内容