$Schema = $Connection.GetSchema(
"Columns",
@($null, $null, $Item, $null)
)
$ExistingColumns = @(
$Schema |
ForEach-Object {
$_.COLUMN_NAME
}
)
foreach ($Column in $FilterTable.Columns) {
$SourceColumn = $Column.ColumnName
switch ($SourceColumn) {
"Purchasing Document" {
$TargetColumn = "Column1"
}
"Item" {
$TargetColumn = "Column2"
}
"Name of Vendor" {
$TargetColumn = "Column3"
}
default {
$TargetColumn = $SourceColumn
}
}
if ($ExistingColumns -notcontains $TargetColumn) {
$cmd = $Connection.CreateCommand()
$cmd.CommandText = @"
ALTER TABLE [$Item] ADD COLUMN [$TargetColumn] TEXT(255) "@
$cmd.ExecuteNonQuery() | Out-Null
$cmd.Dispose()
}
}
$InsertColumns = @( "[Column0]" )
$SelectColumns = @( "'$Item'" )
foreach ($Column in $FilterTable.Columns) {
$SourceColumn = $Column.ColumnName
switch ($SourceColumn) {
"Purchasing Document" {
$TargetColumn = "Column1"
}
"Item" {
$TargetColumn = "Column2"
}
"Name of Vendor" {
$TargetColumn = "Column3"
}
default {
$TargetColumn = $SourceColumn
}
}
$InsertColumns += "[$TargetColumn]"
$SelectColumns += "[Temp].[$SourceColumn]"
}
$InsertColumns += "[StatusLetter]" $SelectColumns += "0"
$InsertColumns += "[ResponseLetter]" $SelectColumns += "False"
$cmd = $Connection.CreateCommand()
$cmd.CommandText = @" INSERT INTO [$Item] ( $($InsertColumns -join ",`n ") )
SELECT $($SelectColumns -join ",`n ")
FROM [Temp]
WHERE NOT EXISTS ( SELECT 1 FROM [$Item]
WHERE [$Item].[Column1] = [Temp].[Purchasing Document]
AND [$Item].[Column2] = [Temp].[Item]
) "@
$cmd.ExecuteNonQuery() | Out-Null
$cmd.Dispose()