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

Outils SQL Server Discussion :

[SQL Server] bcp out : comment récupérer la ligne d'en-tete ?


Sujet :

Outils SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 18
    Par défaut [SQL Server] bcp out : comment récupérer la ligne d'en-tete ?
    Bonjour,
    J'ai un problème avec bcp :
    mon fichier d'exportation de la base doit avoir une première ligne d'entete avec les noms des variables de la table : est-ce possible de récupérer ces noms (à partir du format ou à partir de la table directement)?

    si je ne peux pas, y'a-t'il au moins possibilité que j'écrive 2 fois dans un meme fichier sans l'écraser :
    -une première fois ou j'écrirais le nom des variables avec une bete requete print ou alors en cherchant dans les métatables, les noms de variables de la table
    -une deuxieme fois avec le bcp out, où j'exporterais le contenu de la table

    Si quelqu'un a la solution je suis preneuse.
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Bonjour,

    Vous n'avez pas vraiment besoin de le faire.
    Utilise simplement une formulation suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select 'MonChamp1','MonChamp2','MonChamp3'
    UNION ALL
    Select MonChamp1,MonChamp2,MonChamp3
    FROM MaTable

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 18
    Par défaut Ce n'est pas possible pour les int
    Merci mais,
    Ce serait ok si je n'avais que des types chaines de caractères.
    l'union de fonctionne pas si les types diffèrent.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par rastoix
    Merci mais,
    Ce serait ok si je n'avais que des types chaines de caractères.
    l'union de fonctionne pas si les types diffèrent.
    ben tu convertis

    en plus, tu n'as pas précisé :
    1- si tu avais fait un fichier format.
    2- si tu vas imposer une norme d'extraction des donnes numerique (paddée avec des 0 à droite ou à gauche), idem norme date, idem norme Chaines de caractères (padées à gauche ou droite avec des espaces)...

    Bref si tu as besoin de ce formattage avant extraction, tu vas devoir tout convertir en chaine de caractère. Donc l' UNION sera parfait

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 18
    Par défaut Précisions
    J'utilise un fichier de format pour ma commande bcp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bcp mabase..matable out c:\fichier_export.csv -f c:\format_exportation.fmt -T -e c:\erreur_exportation.txt
    J'ai des données numériques, des chaines....(plusieurs centaines de variables), pas de conditions particulières sur les int.

    Pas la peine de faire : : Je sais bien que je peux changer les types de données : le tout est de savoir s'il existe de quelques chose de moins couteux en temps (car changer les types de donnés sur des centaines de variables pour ma grosse table, ça a un coût qui n'est pas anodin)

    cette exportation aura lieu toutes les nuits.

    Si jamais il existe quelque chose qui le fasse directement, ça m'arrangerait : évidemment s'il n'y a pas d'autres solutions, je passerais par un changement général de type.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    ok ok.

    Dans ce cas là une solution plus crade mais qui marche parfaitement et surtout évite tout pb de conversion de champ d'une table avec des centaines de colonnes

    Tu fais une procédure stockée qui fait :

    1- Appel la commande BCP QUERYOUT avec comme requete le select de tes noms de colonnes. Extraction dans le fichier cible fichier_export.csv

    2- Appel la commande BCP QUERYOUT avec comme requete le select des données de ta table. Extraction dans un fichier donnees.csv par exemple

    3- Creation et execution via xp_cmshell de la commande DOS 'type donnees.csv >> fichier_export.csv'. Cele concatène les deux fichiers en 1

    Inconvénient (y'en a plusieurs mais celui-là est le majeur) : tu dois compter deux fois l'espace disque car tu as 2 fichiers DOS de la quasi même taille pour une seule extraction de données

    A noter que si la table ne change pas beaucoup, alors tu peux extraire les noms de colonnes dans un fichier entete.txt une fois pour toute et faire deux concaténations DOS, ce qui évite de refaire une extraction des noms de colonnes si ceux-ci ne changent jamais.

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

Discussions similaires

  1. [SQL Server] bcp out : comment récupérer la ligne d'en-tete ?
    Par rastoix dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 08/11/2006, 10h25
  2. SQL Server Time out sur Access
    Par Ronin-MK dans le forum Access
    Réponses: 2
    Dernier message: 14/06/2006, 20h42
  3. [SQL Server] Créer la copie d'une ligne
    Par joeln3 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/06/2006, 16h54
  4. [SQL Server] UPDATE d'un ensemble de lignes
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2006, 15h56
  5. [SQL server 2005] caractère de retour à la ligne
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 14h34

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