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

Développement SQL Server Discussion :

Exporter les données en .csv mais cela ne fonctionne pas


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Exporter les données en .csv mais cela ne fonctionne pas
    Bonjour,


    J'essaie d'utiliser l'Agent SQL Server pour y insérer ceci pour avoir de manière automatique mes données sous format .csv:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @BCP VARCHAR(255)
    SET @BCP = 'bcp "maRequeteSQL" queryout C:\ExportDonnes.csv -t; -S monServeur\moninstance -U utilisateurSQL -P motDePasse'
     
    EXEC Master.dbo.xp_cmdshell @BCP --, NO_OUTPUT
    Mais lorsque je fais:

    *New Job
    Name: Requete_automatise

    *Dans Step:

    Step name: Automatise_1

    Type Transact-SQL sript (T-SQL)

    Database: master

    *Command:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @BCP VARCHAR(255)
    SET @BCP = 'bcp "maRequeteSQL" queryout C:\ExportDonnes.csv -t; -S monServeur\moninstance -U utilisateurSQL -P motDePasse'
     
    EXEC Master.dbo.xp_cmdshell @BCP --, NO_OUTPUT
    Cela ne fonctionne toujours pas, pouvez-vous me dire d'où vient l'erreur ?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Bonjour,

    La procédure stockée xp_spcmdShell requiert des privilèges élevés pour être exécutée, or par défaut, les jobs tournent avec le compte de service du SQL Server Agent et par défaut ce compte n'a pas de raison d'être sysadmin.

    Donc, la bonne solution en continuant à utiliser cette méthode est de créer un proxy account et de l'exploiter pour ce job en particulier (tuto Proxy account

    Une meilleure méthode à mon gout serait d'utiliser SSIS pour générer ce fichier Csv (package SSIS qui pourrait être généré avec le wizard Export Data), puis d'en planifier l'exécution dans l'agent

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Bonjour rw72000,

    Ok j'essaie la solution proxy par contre j'aurai une autre question, serais-tu comment faire pour recevoir 1 fichier Excel pour 1 client, par exemple, avec l'extraction des données, j'ai les données de M.Dupont sous un fichier Excel, ensuite j'obtiens un autre fichier Excel mais ce sera celui de Mme Dupuis.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Je ne suis pas sûr d'avoir compris la question, mais si tu dois faire de l'intégration de données, je te conseille de regarder du coté de Sql Server Integration Services

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ok par contre, en ce qui concerne l'authentification par windows et non sql, il faut utiliser cette requête pour avoir un fichier au format .csv ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1234 DECLARE @BCP VARCHAR(255)
    SET @BCP = 'bcp "maRequeteSQL" queryout C:\ExportDonnes.csv -t; -S monServeur\moninstance -T user1'
     
    EXEC Master.dbo.xp_cmdshell @BCP --, NO_OUTPUT

  6. #6
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Tu ne dois pas indiquer user1, c'est le compte qui exécutera le batch qui sera utiliser pour l'authentification.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je dois mettre le login que j'utlise pour me connecter à ma session Windows par exemple mon login c'est Francisg c'est ce que j'uilise pour me connecter via SQL Server Management Studio je dois faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @BCP VARCHAR(255)
    SET @BCP = 'bcp "maRequeteSQL" queryout C:\ExportDonnes.csv -t; -S monServeur\moninstance -T Francisg'
     
    EXEC Master.dbo.xp_cmdshell @BCP --, NO_OUTPUT
    J'ai pourtant tester mais j'ai une erreur disant que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unknown argument 'Francisg' on command line.
    Tu peux être plus précis quand tu me parle du BATCH enfin je sais que c'est un fichier .bat que tu peux utiliser au démarrage de ta session mais à quoi cela va me servir dans mon cas ?

  8. #8
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Non tu ne dois pas mettre ton login. Le principe c'est que le processus tournera avec le compte qui exécute le job SQL Server agent, puisque c'est de cette manière que tu vas l'utiliser.
    Et c'est le proxy account qui dictera donc le compte windows utilisé.
    Tu peux créer un proxy account pour ton login et faire tourner le Job avec.

    La syntaxe BCP ne prévoit pas (je crois) de fournir un login windows explicitement.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Lorsque j'essaie de créer un compte proxy, je dois mettre quoi dans credential name car j'ai mis francisg mais il ne le trouve pas quand je fais un check names ?

  10. #10
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Est-ce que Francisg correspond à un login sql server déclaré dasn la partie Security de ton instance ?

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Sinon j'ai trouvé ça pour exporter en fichier .csv, mais tu serait comment faire en appelant une procédure stockée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @myfile varchar(800)
     
    SET @myfile = 'C:\template.xls'
     
    EXEC ('
    insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
    ''Excel 8.0;Database=' + @myfile + ';'', 
    ''SELECT * FROM [Sheet1$]'') 
    select * from myTable
    ')

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/07/2012, 11h53
  2. Réponses: 3
    Dernier message: 02/07/2008, 11h44
  3. [MySQL] Exporter les données d'une table en PHP
    Par caro_tpl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/08/2006, 12h25
  4. exporter les données d'une DB dans un doc. pdf
    Par gagalive dans le forum API standards et tierces
    Réponses: 35
    Dernier message: 15/07/2006, 14h22
  5. Est-il possible d'exporter les données?
    Par frutix dans le forum Débuter
    Réponses: 8
    Dernier message: 21/06/2004, 11h27

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