Загрузка данных


$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()