IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Problème de delimiter plus en-tête fichier csv [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 32
    Points
    32
    Par défaut Problème de delimiter plus en-tête fichier csv
    Bonjour à tous,

    J'ai un souci avec un script powershell que j'ai écrit qui se connecte à un serveur sql server va faire une requête dans la BDD et je dois ressortir un csv tout beau de tout ça.

    J'ai écrit le script et ça marche sauf pour deux choses :

    - D'une part si je change le -delimiter (comme fait dans le code ci-dessous) il me met une jolie erreur Export-Csv : Impossible de trouver un paramètre correspondant au nom "delimiter" et que je mette un espace ou non entre le ";" et le -delimiter j'ai toujours un message d'erreur... Ce csv va être intégré ensuite dans une application qui attend des ";" en séparation de champs. Donc je ne peux pas me contenter des "," simple par défaut.
    - D'autre part lorsque j'ouvre mon fichier la première ligne est : "#TYPE System.Data.DataRow" existe-il un moyen de supprimer cette ligne simplement sans avoir à aller lire le fichier et supprimer la première ligne avec du code ?

    Ci dessous le code qui ne fonctionne pas :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $SQLServer = "XXXXXXXXX" #use Server\Instance for named SQL instances!
    $SQLDBName = "XXXXXX"
    $extractFile = "D:\structure\toto.csv"
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; 
    User ID= USER; Password= PWD"
    $SqlQuery = "SELECT     dbo.AEJ.EJLIB, dbo.AETB.E0COD, dbo.AETB.E0LIB, dbo.AETB.E0ADR1, dbo.AETB.E0ADR2, dbo.AETB.E0TEL, dbo.AETB.E0FAX, dbo.AETB.E0MAIL, 
                          dbo.AETB.E0FINESS, dbo.AETB.E0SIRET, dbo.ACR.CRCOD, dbo.ACR.CRLIB, dbo.ACR.CRADR1, dbo.ACR.CRADR2, dbo.ACA.CACOD, dbo.ACA.CALIB, dbo.ACA.CAADR1, 
                          dbo.ACA.CAADR2, dbo.ALETBUD.LETITRE, dbo.ALETBUD.LELIB, dbo.ALETBUD.LECODB, dbo.AUF.UFCOD, dbo.AUF.UFLIB, dbo.AUF.UFADR1, dbo.AUF.UFTEL, 
                          dbo.c_v_agruf_pole.rgcode, dbo.c_v_agruf_pole.rglib, dbo.ATYPSEJ.TYCOD
    FROM         dbo.AEJ INNER JOIN
                          dbo.AETB ON AETB.EJCLEUNIK = AEJ.EJCLEUNIK INNER JOIN
                          dbo.ACR ON ACR.E0CLEUNIK = AETB.E0CLEUNIK INNER JOIN
                          dbo.ACA ON ACA.CRCLEUNIK = ACR.CRCLEUNIK INNER JOIN
                          dbo.AUF ON AUF.CACLEUNIK = ACA.CACLEUNIK INNER JOIN
                          dbo.ALETBUD ON ALETBUD.LETITRE = ACR.LETITRE LEFT OUTER JOIN
                          dbo.ATYPSEJ ON ATYPSEJ.TYCLEUNIK = auf.tycleunik LEFT OUTER JOIN
                          dbo.c_v_agruf_pole ON C_V_AGRUF_POLE.UFCLEUNIK = AUF.UFCLEUNIK
    WHERE     (1 = 1) AND (COALESCE (ACR.CRDATFERMDEF, '20781231') > '20130724') AND (COALESCE (ACA.CADATFERMDEF, '20781231') > '20130724') AND 
                          (COALESCE (AUF.UFDATFERMDEF, '20781231') > '20130724')
    ORDER BY AEJ.EJLIB, AETB.E0COD, ACR.CRCOD, ACA.CACOD, AUF.UFCOD"
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = $SqlQuery
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd 
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    $SqlConnection.Close()
     
    $DataSet.Tables[0] | Export-Csv -path $extractFile -delimiter ";"

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 32
    Points
    32
    Par défaut
    Bon j'ai résolu le truc tout seul mais c'est du bricolage si quelqu'un a une autre idée je suis prenneur voici les dernières lignes du code modifié :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $DataSet.Tables[0] | Export-Csv -path $extractFile -noTypeInformation
     
    $content = Get-Content $extractFile | foreach { $_ -replace ",",";" } 
    Set-Content -Path $extractFile -Value $content

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème encodage UTF-8 d'un fichier csv sous excel
    Par mobinaute dans le forum Excel
    Réponses: 2
    Dernier message: 01/03/2013, 23h58
  2. [Batch] Problème: Remplacer un caractère d'un fichier .csv (Script batch)
    Par littlebear dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 04/06/2012, 16h57
  3. TotalItemSize powershell plus gros que fichier EDB
    Par richton95 dans le forum Exchange Server
    Réponses: 2
    Dernier message: 04/10/2011, 09h53
  4. Réponses: 2
    Dernier message: 20/04/2011, 15h26
  5. [XL-2003] Problème avec label plus aide sur fichier excel
    Par piranna56 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/06/2009, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo