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 :

Peut-on exporter en txt via T-SQL ?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 686
    Par défaut Peut-on exporter en txt via T-SQL ?
    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

    #DEPART
    DUPONT
    JEAN

    45 avenue de la liberté

    75000
    PARIS
    44
    # AUTRE
    ....
    Les données provenant d'une table selon critère(s) et d'autres provenant de calculs, concaténations, extraction de chaines, .. ou données en dur.

    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

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    utiliser l'utilitaire BCP avec un fichier de format (.fmt)

    Pour plus d'infos
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 686
    Par défaut
    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.

  4. #4
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Etienne ZINZINDOHOUE
    Billets-Articles

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 686
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @BCPReq VARCHAR(120)
    DECLARE @BCPResultINT
     
    --Construction de la commande BCP pour exporter la table vers un fichier
    SET @BCPReq = 'bcp afer.dbo.WEBFALPA out c:\webas400\archive\export\WEBFALPA -c -t"|" -U sa -P'
    --Execution de la commande BCP
    EXEC @BCPResult = master.dbo.xp_cmdshell @BCPReq
     
    --Controle du résultat
    IF (@BCPResult= 0)
    	PRINT 'Success'
    ELSE
    	PRINT 'Failure'

    Mais je ne comprends pas comment obtenir le résultat en lignes.
    Exemple : ma requête me sort 2 lignes :
    DUPONT/FIAT/1000
    DURANT/FORD/120
    L'export txt par le BCP donnerait qq chose comme :
    DUPONT;FIAT;1000
    DURANT;FORD;120
    Mais moi, Je voudrais obtenir un txt donnant :
    #FLAGDEBUT
    #ENREGISTREMENT1
    DUPONT
    FIAT
    1
    1000
    500
    #ENREGISTREMENT2
    DURANT
    FORD
    1
    120
    60
    #FLAGFIN
    #
    1 étant une valeur forcée (tout le temps la même)
    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

  6. #6
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    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.
    Etienne ZINZINDOHOUE
    Billets-Articles

  7. #7
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    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'
    1,lundi
    2,mardi
    3,mercredi
    4,jeudi
    5,vendredi
    6,samedi
    7,dimanche
    En exécutant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @CMD NVARCHAR(4000) -- Commande à exécuter 
      , @FichierEntree NVARCHAR(255) -- Fichier à traiter
      , @FichierSortie NVARCHAR(255) -- Fichier sortie
     
    BEGIN  
    SET @FichierEntree = 'E:\FichierEntree.txt' 
    SET @FichierSortie = 'E:\FichierSortie.txt'  
    SET @CMD = 'FOR /f "tokens=1,2 delims=," %a in ('+ @FichierEntree +') do ( echo %a >> '+ @FichierSortie + '|'+ 'echo %b >> ' + @FichierSortie + ')' 
    EXEC master..xp_cmdshell @CMD
    END
    On obtient

    Le fichier de sortie 'E:\FichierSortie.txt'
    1
    lundi
    2
    mardi
    3
    mercredi
    4
    jeudi
    5
    vendredi
    6
    samedi
    7
    dimanche

    Tu peux d'inspirer de cet exemple pour écrire ta procédure stockée


    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

Discussions similaires

  1. Export BD via script sql
    Par snayksql dans le forum Requêtes
    Réponses: 0
    Dernier message: 04/05/2010, 10h35
  2. Réponses: 2
    Dernier message: 26/09/2009, 22h15
  3. Ouvrir et écrire dans un fichier .txt en T-SQL
    Par joul's dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/10/2008, 21h04
  4. Exporter une base MSDE vers SQL Server
    Par Noodles dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/01/2005, 13h56
  5. Export sous forme d'INSERT SQL
    Par Kraken dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/09/2003, 11h40

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