Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function DatabaseHandler
- {
- param($connection_string, $destination_table,$data_table,$timeout)
- $bulkCopy = New-Object Data.SqlClient.SqlBulkCopy($connection_string)
- $bulkCopy.DestinationTableName = $destination_table
- $bulkCopy.BulkCopyTimeout = $timeout
- $bulkCopy.WriteToServer($data_table)
- }
- function MakeColumn($column_name,$data_type)
- {
- $column = New-Object System.Data.DataColumn
- $column.DataType = [System.Type]::GetType($data_type);
- $column.ColumnName = $column_name;
- return $column
- }
- function IntializeDataTable
- {
- param($data_table,$column_data)
- foreach($column_specifier in $column_data)
- {
- $data_table.Columns.Add(
- (MakeColumn $column_specifier.name $column_specifier.data_type))
- }
- }
- Function CsvHandler
- {
- param($data_table,$column_data)
- begin {
- Write-Host "Processing Started:" (Get-Date)
- $progress = 0
- $chunksize = 10000
- }
- process {
- $row = $data_table.NewRow()
- foreach($column_specifier in $column_data)
- {
- $name = $column_specifier.name
- if( $column_specifier.ContainsKey("function") -and ( IsScriptBlock $column_specifier.function ) )
- {
- $column_value = & $column_specifier.function $name $_
- }
- elseif ( $column_specifier.ContainsKey("fixed_value") )
- {
- $column_value = $column_specifier.fixed_value
- }
- else
- {
- $column_value = $_.$name
- }
- $row[$name] = $column_value
- }
- $data_table.Rows.Add($row)
- $progress++
- if($progress % $chunksize -eq 0)
- {
- Write-Host $chunksize "records processed"
- }
- }
- end {
- Write-Host "Processing Ended:" (Get-Date)
- }
- }
- Function PopulateDatabaseFromCsv
- {
- param($csv,$column_data,$connection_string,$destination_table,$timeout=30)
- $data_table = New-Object System.Data.DataTable($destination_table)
- IntializeDataTable $data_table $column_data
- Import-Csv $csv | CsvHandler $data_table $column_data
- DatabaseHandler $connection_string $destination_table $data_table $timeout
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement