I'm converting a CSV to SQL inserts and there's a null-able text column which I need to quote in case it is not NULL. I would write something like the following for the conversion:

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

But I can't figure out how to add an additional tier into the pipeline to look if COL2 is not equal to 'NULL' and to quote it in such cases. How do I achieve such behavior?

link|improve this question

71% accept rate
feedback

1 Answer

up vote 1 down vote accepted

In the code block of the foreach-object cmdlet you can have multiple statements, something like:

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
}
link|improve this answer
Thanks! This is a solution of course, but I wonder if there's a less verbose way of doing this, maybe something similar to how you can do filtering. – axk Apr 16 '10 at 10:17
1  
PSCX () providers some helpers that work like a conditional operator which would certainly help in this case. pscx.codeplex.com – Richard Apr 17 '10 at 8:43
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.