§ Parallélisation des
insertions pour accélérer le déplacement des
données
Si le volume de données déplacées est
important, vous pouvez accélérer l'opération en
exécutant plusieurs commandes BCP simultanément dans un script
PowerShell.
Remarque :
Traitement de volumes importants de
données pour optimiser le chargement de volumes importants et
très importants de jeux de données, partitionnez vos tables de
base de données physiques et logiques en utilisant plusieurs groupes de
fichiers et tables de partition.
L'exemple de script PowerShell ci-dessous montre comment
effectuer des insertions en parallèle à l'aide de BCP :
Copy
$NO_OF_PARALLEL_JOBS=2
Set-ExecutionPolicy RemoteSigned #set execution policy for the
script to execute
# Define what each job does
$ScriptBlock = {
param($partitionnumber)
#Explictly using SQL username password
bcp database..tablename in datafile_path.csv -F 2 -f
format_file_path.xml -U username@servername -S tcp:servername -P password -b
block_size_to_move_in_single_attempt -t "," -r \n -o
path_to_outputfile.$partitionnumber.txt
#Trusted connection w.o username password (if you are
using windows auth and are signed in with that credentials)
#bcp database..tablename in datafile_path.csv -o
path_to_outputfile.$partitionnumber.txt -h "TABLOCK" -F 2 -f
format_file_path.xml -T -b block_size_to_move_in_single_attempt -t "," -r \n
}
# Background processing of all partitions
for ($i=1; $i -le $NO_OF_PARALLEL_JOBS; $i++)
{
Write-Debug "Submit loading partition # $i"
Start-Job $ScriptBlock -Arg $i
}
# Wait for it all to complete
While (Get-Job -State "Running")
{
Start-Sleep 10
Get-Job
}
# Getting the information back from the jobs
Get-Job | Receive-Job
Set-ExecutionPolicy Restricted #reset the execution policy
|