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 :

Export-csv ne créé pas de fichier mais ne génére pas d'erreur


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 257
    Points : 395
    Points
    395
    Par défaut Export-csv ne créé pas de fichier mais ne génére pas d'erreur
    Bonjour bonjour

    Je débute en PowerShell et je suis perplexe... En effet, mon code a pour but d’exécuter du SQL, puis d'interroger une table SQL Server et en générer le résultat dans un fichier CSV.
    Quand je fais tout ça sans fonction, sans fioriture, ça fonctionne. J'ai ensuite essayé de rajouter des fonctions pour que ce soit plus lisible et y rajouter des potentielles gestion d'erreur.

    Je vous mets mon code :

    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
    function ExportCsv{
     
    $SQLCommand = New-Object System.Data.SqlClient.SqlCommand
    $sqlCommand.CommandTimeout = 100
    $SQLCommand.CommandText = "select * from matable;"
    $SQLCommand.Connection = $SQLConnection
    $SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SQLCommand
    $SQLDataset = New-Object System.Data.DataSet
    $SqlAdapter.fill($SQLDataset,'export') >$null| out-null
    $rowCount = $SqlAdapter.Fill($SQLDataset)
    #$SQLConnection.close()
    if($rowCount -gt 0)
    {
        $SQLDataset.Tables['export'] | Export-Csv -Path $extractFile -notypeinformation -Debub -Append
    }
    else
    {
     
        [System.Windows.Forms.MessageBox]::Show("perdu:")
        Write-Error "No data to display"
    }
     
    }
     
    ExportCsv

    Quand j'exécute mon code via PowerShell ISE, dans la sortie de script, j'ai toutes mes données qui s'affichent, pas contre le fichier CSV n'est jamais crée... J'ai testé ma variable $extractFile elle fonctionne comme il faut...

    Alors du coup, je ne comprends pas, pourquoi mon fichier csv ne se génère pas... Je suis perdu

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bizarre ton code et ta conception.

    Avec ce que tu nous montre nous ne pouvons que te dire que :
    $SQLConnection n'est pas déclarée
    $extractFile n'est pas déclarée

    Et pour faire deux fois ".fill" ? Essaie comme ceci
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $rowCount = $SqlAdapter.fill($SQLDataset, 'export') >$null| out-null

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 257
    Points : 395
    Points
    395
    Par défaut
    A la base je n'ai pas le if dans mon code ni la partie avec le $rowcount, je les ai rajouté pour faire des tests...

    Pour ce qui est de $sqlconnexion et de $extractfiles, ils sont bien déclarés au dessus de ma fonction, d'ailleurs j'ai mes résultats de requête qui s'affichent bien dans ma console quand j'exécute ma procédure

    C'est vraiment l'export csv qui ne fait rien


    La version originale de mon code :

    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
    function ExportCsv{
        $SQLCommand = New-Object System.Data.SqlClient.SqlCommand
        $sqlCommand.CommandTimeout = 600
        $SQLCommand.CommandText = "select * from matable;"
        $SQLCommand.Connection = $SQLConnection
        $SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
        $SqlAdapter.SelectCommand = $SQLCommand
        $SQLDataset = New-Object System.Data.DataSet
        try {
            $SqlAdapter.fill($SQLDataset) | out-null
            $SQLConnection.close()
            $SQLDataset.Tables[0] | Export-Csv $extractFile -notypeinformation
            Write-Progress -Activity "Executing SQL" -Status "Executing SQL => $text..."
            Write-Host "Executing SQL => $text... Export to csv..."
     
            Start-Sleep -s 20
     
            #Une fois le fichier généré, on appelle la fonction qui l'enverra par mail
            Write-Progress -Activity "Appel de la fonction d'envoi de mail" -Status "Envoie mail..."
            Write-Host "Appel de la fonction d'envoie de mail..."
            SendMail
     
        }
        catch {
            Write-Error "Erreur ligne 74 : Execution failed :=> CSV export query"
            $Exception = $_.Exception.Message
            Write-Error $Exception
            [Environment]::Exit(4)
        }
    }

    Le code est-il mieux ainsi ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2010, 14h38
  2. Exporter une table MySQL vers un fichier CSV
    Par sam01 dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2007, 16h44
  3. Réponses: 16
    Dernier message: 10/07/2007, 09h12
  4. Réponses: 2
    Dernier message: 05/05/2006, 14h30
  5. L'utilisateur peut créer un fichier mais pas l'effacer
    Par crakazoid dans le forum Administration système
    Réponses: 2
    Dernier message: 22/11/2005, 07h45

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