Quick post on how to use BCP with powershell. Adjust options to suit your needs.
Import-Module SqlPS -DisableNameChecking
$query = "SELECT * FROM TABLE"
try{
$srcConn = New-Object System.Data.SqlClient.SqlConnection("PersistSecurityInfo = true;Server=Server1;Database=DBName;Integrated Security=True;Application Name=PowerShell_BCP");
$destConn = New-Object System.Data.SqlClient.SqlConnection("PersistSecurityInfo = true;Server=Server2;Database=DBName;Integrated Security=True;Application Name=PowerShell_BCP");
$srcCommand = New-Object System.Data.SqlClient.SqlCommand($query, $srcConn);
$destBulk = New-Object System.Data.SqlClient.SqlBulkCopy($destConn);
$destBulk.BulkCopyTimeout = 0;
$destBulk.BatchSize = 1000
$destBulk.DestinationTableName = 'DestTable'
$srcConn.Open();
$destConn.Open();
$results = $srcCommand.ExecuteReader();
$destBulk.WriteToServer($results);
$srcConn.Close();
$destConn.Close();
}
catch{
$_ | fl -Force
}
Leave a comment