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 :

Renommer des colonnes dans une requête SQL en utilisant bcp


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Renommer des colonnes dans une requête SQL en utilisant bcp
    Bonjour à tous,

    je me trouve confronté à un souci technique auquel je n'arrive pas à trouver de réponse.

    Pour faire simple, je souhaite utiliser l'utilitaire bcp et la commande xp_cmdshell afin d'automatiser l'extraction de données d'une table de ma BDD.
    Lors de cette extraction, j'ai besoin d'afficher des noms de colonnes et des numéros de lignes, j'ai fait ma requête SQL qui fonctionne parfaitement lors d'un test avec Toad for SQL Server mais qui ne marche plus lorsque je mets le tout dans une procédure stockée avec appel a bcp et xp_cmdshell.

    Je vous mets l'exemple de ma procédure stockée si jamais quelqu'un peut m'apporter une piste ou une solution.

    Code : 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
    32
    33
    34
    35
    36
    37
    38
    BEGIN
      SET NOCOUNT ON;
    DECLARE @L_CURRENTDATE DATETIME
    DECLARE @L_OUT_PATH VARCHAR(100)
    DECLARE @L_OUT_FILENAME VARCHAR(100)
    DECLARE @QUERY NVARCHAR(4000)
     
     
    SET @L_CURRENTDATE = GETDATE()
    SET @L_OUT_PATH = 'C:\Users\XXXX\'
    SET @L_OUT_FILENAME =@Service+'_Test_'+@QuarterYear+'.csv'
     
     
    SET @QUERY = 'select row_number() OVER (order by Direct_Participant_BIC),
           Direct_Participant_BIC+'STEP2' AS '2' ,
           Total_Payments_Sent AS '3',
           Daily_Average_Payments_Sent AS '4',
           Total_Payments_Received	AS '5',
           Daily_Average_Payments_Received AS '6',
           Sending_First_XXXX	AS '7',
           Sending_Remaining AS '8',
           Min_Charging_For_Sending AS '9',
           Charging_Remaining AS '10',
           Charging_Receiving AS '11',
           Total_Tier_Charges_To_Be_Billed AS '12',
           Average_Price_For_Transaction_Sent AS '13',
           Average_Price_For_Transaction_Received AS '14'
           from [BDD]..['+@Table_Name+']'
     
    SET @QUERY = 'bcp "'+@QUERY+'" queryout ' + @L_OUT_PATH + @L_OUT_FILENAME + ' -c -t";" -T '
    PRINT @QUERY
     
    SET @QUERY = 'execute master.dbo.xp_cmdshell '+''''+@QUERY+''''
     
    EXECUTE master.dbo.sp_executesql @QUERY,N'@L_CURRENTDATE DATETIME',@L_CURRENTDATE
     
    RAISERROR( '', 0, 1) WITH NOWAIT
    END
    Le fait de renommer les colonnes avec 'AS' ne passe pas et cela me sort une erreur à chaque fois, pourtant il me faudrait pouvoir renommer ces colonnes pour sortir un fichier correct.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Quel est le libellé de l'erreur ?

    @++

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,


    Concernant la construction de ta chaine @QUERY,
    a/Je ne suis pas sure que tu puisses mettre des retour chariot, mais je ne garantie pas le contraire non plus.
    b/ Tu n'as pas géré le fait que tu as des simple quote ' dans ta chaine. Pour les gérer, soit tu les doubles (deux simples quotes) soit tu les échapes, mais là je ne sais pas faire.

    Met un print avant la concaténation et après. Met en commentaire le execute, et vérifie la gueule de @query.

    Deuxième remarque, pour renommer la deuxième colonne, j'aurais écrit
    Sans quote

    A+
    Soazig

Discussions similaires

  1. Mettre des variables dans une requête SQL
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/01/2015, 13h25
  2. Changer le format des dates dans une requête SQL
    Par Tazze-99 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/07/2012, 15h09
  3. tester la valeur d'une colonne dans une requête sql
    Par 461219 dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 02/10/2008, 11h37
  4. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  5. Réponses: 5
    Dernier message: 28/12/2006, 15h41

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