Powershell – Exemple de transfert de données vers un système Unix

par | Mar 12, 2015 | PowerShell | 0 commentaires

 

A la suite de la récupération d’un dataset issu d’une requête a une base sql on veut exporter et transférer les données vers un système Unix.

Comme indiqué dans le code, a la suite de la validation du fait que le résultat de la requête contienne des données (RequestSQL OK),  on converti le dataset en csv vers un fichier local ($FullLocalFile):

($DataSet.Tables[0] | convertto-csv -Delimiter « ; » -NoTypeInformation)  | Out-File -FilePath $FullLocalFile

Puis on récupère le contenu du fichier pour ensuite le convertir au format UTF8 (au passage on écrase le fichier d’origine):

$content=get-content $FullLocalFile
Set-Content -value $content -Encoding UTF8 -Path $FullLocalFile –Force

Enfin on envoi en ftp le fichier vers le système Unix (en construisant dynamiquement le fichier de commande):

N.B: Il est possible que le mode de transfert (ascii ou binary) ait une influence sur le résultat du transfert. N’hésitez pas a tester les deux cas.

#construction fichier ftpcommands
New-Item -Path « $LocalDirectory\ftpcommands.txt » -ItemType file -Force -value `
« open monserverunix
user1
password
ascii
cd /monappli/data
lcd $LocalDirectory
mput $FileName
Y
bye »

#Envoi FTP et verification
ftp.exe -s:$LocalDirectory\ftpcommands.txt > « $LocalDirectory\resultatftp.txt »

(…)

#suppression du fichier ftpcommands
Remove-Item -Path « $LocalDirectory\ftpcommands.txt »
Remove-Item -Path « $LocalDirectory\resultatftp.txt »

 

$LocalDirectory=« D:\Data«  $FileName=« data.csv«  $FullLocalFile=« $LocalDirectory\$FileName«  (…) #Si le dataset est vide => Echec de la requête => $RequestSuccess=$false If (($DataSet.Tables[0] | Measure–Object).count -eq « 0« ) { $RequestSuccess=$false write–host –ForegroundColor blue « Dataset vide – FIN DU SCRIPT«  Exit } Else { $RequestSuccess=$true write–host –ForegroundColor green « RequestSQL OK«  #Export du fichier CSV en local ($DataSet.Tables[0] | convertto–csv –Delimiter « ;«  –NoTypeInformation) | Out-File –FilePath $FullLocalFile #Recuperation du contenu et conversion en UTF8 pour compatibilité Unix $content=get–content $FullLocalFile Set–Content –value $content –Encoding UTF8 –Path $FullLocalFile –Force } #construction fichier ftpcommands New–Item –Path « $LocalDirectory\ftpcommands.txt«  –ItemType file –Force –value ` « open monserverunix user1 password ascii cd /monappli/data lcd $LocalDirectory mput $FileName Y bye«  #Envoi FTP et verification ftp.exe –s:$LocalDirectory\ftpcommands.txt > « $LocalDirectory\resultatftp.txt«  (…) #suppression du fichier ftpcommands Remove–Item –Path « $LocalDirectory\ftpcommands.txt«  Remove–Item –Path « $LocalDirectory\resultatftp.txt« 

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *