|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2003 Messages : 18 ![]() |
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 |
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() |
Bonjour,
Vous n'avez pas vraiment besoin de le faire. Utilise simplement une formulation suivante : Code :
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2003 Messages : 18 ![]() |
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. |
|
|
00
|
|
|
#4 | |
|
Membre éprouvé
![]() Inscription : juillet 2004 Messages : 437 ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2003 Messages : 18 ![]() |
J'utilise un fichier de format pour ma commande bcp :
Code :
Pas la peine de faire : 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. |
||
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Inscription : juillet 2004 Messages : 437 ![]() |
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. |
|
|
00
|
|
|
#7 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2003 Messages : 18 ![]() |
Super,
J'avais pas pensé aux commandes dos (idiote que je suis Donc finalement voici comment je procède : 1) création d'une fonction stockée qui me renvoie les noms des variables séparées par un séparateur ';' et qui ne met pas ';' après la dernière variable: (j'ai mis en paramètre le nom de la table) Code :
2) dans mon fichier .bat Je fais les 2 bcp J'utilise la commande type pour concaténer les 2 fichiers crées J'efface le fichier temporaire Code :
MERCI MERCI MERCI |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com