|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Bonjour,
Je cherche à savoir si on peut faire des exports dans un txt d'infos dans un txt selon un format précis ? Exemple : je voudrais obtenir dans un txt nommé toto_29122010.txt Citation:
J'ai cherché sur le net, il semble bien que ce soit possible mais je n'ai pas réussis à trouver d'exemples assez clair pour mon faible niveau. Auriez-vous un exemple simple ? ou pourriez-vous m'aiguiller dans ma recherche sur des mots clés du code T-SQL ? Merci Thibault |
|
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci pour cette notion de fmt et pour le lien.
J'ai lu rapidement le lien et j'ai l'impression que cela ne réponds pas à mon besoin : faire un export en txt sur un format particulier (chaque champ à la ligne et non en colonne) et possibilité d'exporter des valeurs définies ou calculées. Pour reprendre mon exemple du 1er message, la valeur 44 serait, par exemple le champ [Prix_Unit]*0,5. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
|
|
00
|
|
|
#5 | |||||
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci pour la réponse. J'ai cherché plusieurs heures entre hier soir et ce matin des exemples de bcp. Mais je n'ai pas réussi à en trouver un seul qui donne un txt affichant chaque champ à la ligne.
J'ai trouvé notamment ce genre de code : (avec master.dbo.xp_cmdshell et BCP) Code :
Mais je ne comprends pas comment obtenir le résultat en lignes. Exemple : ma requête me sort 2 lignes : Citation:
Citation:
Citation:
500 ou 60 étant la valeur précédente divisée par 2 Les Lignes de dièses étant importantes pour moi. Qq'un aurait-il un exemple ? Merci |
|||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
dans ce cas il faut au moins 2 étapes :
1) bcp pour exporter comme tu l'as obtenu 2) traitement du fichier de sortie pour avoir le résultat que tu souhaites. Pour ce traitement je pense à la fonction split qui existe dans beaucoup de langage de programmation mais n'existe pas de façon native sous T-SQL. Mais sur internet tu peux trouver des fonctions T-SQL qui permettent de split des chaines de caractères. |
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Je me permet de m'immiscer... pour faire ce genre de chose, pourquoi ne fais-tu pas un script externe, genre en powershell ou autre : Tu lances ta requete pour récupérer les données, et ensuite tu génère ton fichier de sortie. A mon avis, ca sera plus simple. As-tu des contraintes qui t'empêchent de faire ainsi ? |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Moi je me permets de vous demander a quoi va vous servir ce fichier texte formatté ? Est ce pour une autre application ? ++ |
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
merci pour vos lectures.
Je ne connais pas powershell : je vais chercher des infos sur le net sur le champs pour voir si je peux l'aborder facilement. Mon but est effectivement de générer un fichier txt qui sera importable par un logiciel tiers. Je suis persuadé à 100% d'avoir déjà vu ce genre de code en T_SQL (sans être certain, je crois que c'était dans une procédure stockée) sur une base SQL chez un client mais impossible de savoir où je l'ai vu et donc impossible de le lire. Je pourrais partir vers un second traitement externe en vb mais justement si c'est possible dans SQL Server, je voudrais essayer d'apprendre à le faire : pour ne pas mourir idiot. A+ thibault |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
je disais powershell, car en fonction de votre version de SQL Server, powershell sera peut être déjà installé.
mais sinon n'importe quel langage fera l'affaire. Si vous avez un serveur PHP et que vous maitrisez un minimum PHP, un script CGI plannifié ne vous prendra que quelques minutes a faire... disons que pour ce que vous voulez faire, un langage de programmation sera plus adapté que T-SQL. Après je ne connais pas toutes vos contraintes... Vous dites que c'est pour un logiciel tiers... de quel type ? une appli web ? vous avez les sources/la main dessus ? bref, sans connaitre le contexte précis, on ne peux que donner des pistes.. a adapter a vos besoins précis. |
|
|
00
|
|
|
#11 | ||||
|
Membre Expert
![]() ![]() |
Une idée pour traiter les fichiers générés après le bcp.
Exemple --------------- Si le fichier généré après bcp (fichier d'entrée) est : 'E:\FichierEntree.txt' Citation:
Code :
Le fichier de sortie 'E:\FichierSortie.txt' Citation:
Tu peux d'inspirer de cet exemple pour écrire ta procédure stockée A+ |
||||
|
00
|
|
|
#12 | ||
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci ce dernier exemple est très utile !!
![]() Je laisse ouvert ce post pour l'instant par rapport à Mikedavem et aieeeuuuuu. Au cas où, ils auraient une autre idée. Dans le même style de ce dernier exemple, est-il possible de directement splitter le résultat d'une requête en x variable. (et ainsi pouvoir écrire mon txt, ligne à ligne) ? exemple : j'ai un : et j'aurais qq chose du style (code faux puisque je ne sais pas le faire) : Code :
|
||
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
J'en ai déjà évoquée une qui me parait la plus générique : un script planifié sous windows dans le langage de ton choix et ce pour deux raisons : 1/ Ce que tu cherche a faire est plus de la mise en forme que du traitement des données, c'est donc plus le rôle d'un langage que d'un SGBDR. En plus ca te prendra pas plus d'une heure d'écrire un tel script (plus dix secondes pour le planifier sur Windows) 2/ activer le cmdShell, personnellement, j'évite a tout prix. Il est d'ailleurs désactivé par défaut pour les même raisons que celles qui me poussent a ne pas l'activer... Donc je pense que la solution de zinzineti est celle qui répond le mieux a ta question, mais pas forcement a ton besoin, c'est pourquoi je te demandais quelques infos supplémentaires sur le contexte. que va devenir le fichier généré par la suite ? être insère manuellement, automatiquement, par quel processus ? A mon avis tu peux trouver une solution beaucoup plus simple, et avec une meilleure sécurité, en prenant un peu de recul sur ton problème... ou en nous donnant plus d'infos |
|
|
|
00
|
|
|
#14 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Dans ce cas, je ne vais pas chercher à aller + loin dans T-SQL.
Mon métier n'est pas le dév. C'est + une réponse en cas de "petites" demandes annexes. C'est pourquoi j'évite de partir sur plusieurs outils pour éviter de me "perdre". j'aurais préféré faire tout dans SQL management (ainsi j'aurais "progressé" et n'aurais pas fait un bout à gauche et l'autre à droite) Je pense que dans ce cas, je vais partir sur une base Access, faire mes requêtes et mon vba pour la partie Export. Merci à tous et bonne année |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com