8
0
Skriptentwickung/examples/PowerShell/PS_SQL_Bulk_Insert.txt

68 lines
2.1 KiB
Plaintext

'Default','ascii','ansi','bigendianunicode','bigendianutf32','oem','unicode','utf7','utf8','utf8BOM','utf8NoBOM','utf32'
$ServerName = "DeinServerName"
$DatabaseName = "DeineDatenbank"
$TableName = "DeineTabelle"
$CsvFilePath = "PfadZurCsvDatei"
# Aufbau der SQL-Verbindung
$connectionString = "Server=$ServerName;Database=$DatabaseName;Integrated Security=True;"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
# CSV-Daten lesen
$bulkCopy = New-Object ("Data.SqlClient.SqlBulkCopy") $connection
$bulkCopy.DestinationTableName = $TableName
# Spalten zuordnen
$bulkCopy.ColumnMappings.Add("Spalte1", "Spalte1")
$bulkCopy.ColumnMappings.Add("Spalte2", "Spalte2")
# Weitere Spaltenzuordnungen hinzufügen wie benötigt
# Daten in die Tabelle einfügen
$dataTable = New-Object System.Data.DataTable
$dataTable.Load((New-Object IO.StreamReader($CsvFilePath)).ReadToEnd().Split("`n"))
$bulkCopy.WriteToServer($dataTable)
$connection.Close()
--------
$ServerName = "DeinServerName"
$DatabaseName = "DeineDatenbank"
$TableName = "DeineTabelle"
$CsvFilePath = "PfadZurCsvDatei"
# Aufbau der SQL-Verbindung
$connectionString = "Server=$ServerName;Database=$DatabaseName;Integrated Security=True;"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
# CSV-Daten lesen
$csvData = Import-Csv $CsvFilePath
# Vorbereitung der Daten für den Bulk Insert
$dataTable = New-Object System.Data.DataTable
$csvData[0].PSObject.Properties.Name | ForEach-Object { $dataTable.Columns.Add($_) }
$csvData | ForEach-Object {
$row = $dataTable.NewRow()
$_.PSObject.Properties.Name | ForEach-Object { $row[$_] = $_ }
$dataTable.Rows.Add($row)
}
# Bulk Insert ausführen
$bulkCopy = New-Object Data.SqlClient.SqlBulkCopy($connection)
$bulkCopy.DestinationTableName = $TableName
# Spaltenzuordnungen hinzufügen
$dataTable.Columns | ForEach-Object { $bulkCopy.ColumnMappings.Add($_.ColumnName, $_.ColumnName) }
# Daten in die Tabelle einfügen
$bulkCopy.WriteToServer($dataTable)
$connection.Close()