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 :

Importation de données dans un fichier


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut Importation de données dans un fichier
    Bonjour,

    Je suis en SQL SERVER 2000 et je voudrais une fois par mois importer les données qui se trouve dans une table dans un fichier texte et chaque colonne délimité par des virgules.

    Je suis capable de le faire via un DTS mais je dois mettre un nom de fichier fixe ce qui n'est pas pratique car je veux garder un historique des fichiers à chaque mois donc je ne veux pas à chaque mois écraser mon fichier du mois précédent.

    Je me demandais, est-ce possible via programmation d'importer les données d'une table dans un fichier texte et de délimiter chaque colonne par une virgule ?

    Merci

  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 : 44
    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
    Par défaut
    Bonjour,

    mais je dois mettre un nom de fichier fixe ce qui n'est pas pratique car je veux garder un historique des fichiers à chaque mois
    Ceci n'est pas un problème : vous pouvez calculer le nom du fichier à importer à partir de la date du jour. Mettons que votre fichier doive avoir la forme MonFichier_dd_mm_yyyy.txt. Vous pouvez calculer son nom avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE @nomFichierAImporter VARCHAR(255)
     
    SET @nomFichierAImporter = 'MonFichier_' + REPLACE(CONVERt(CHAR(10), GETDATE(), 103), '/', '_') + '.txt'
     
    -- Pour voir le nom du fichier
    PRINT @nomFichierAImporter
    est-ce possible via programmation d'importer les données d'une table dans un fichier texte et de délimiter chaque colonne par une virgule ?
    Bien sûr, en utilisant le commutateur -t de l'utilitaire bcp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bcp "SELECT mesColonnes FROM maBD.monSchema.maTable" queryout monFichier.txt -T -t, -c
    A+

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Merci beaucoup je vais pouvoir dormir heureux ce week-end

  4. #4
    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 : 44
    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
    Par défaut
    Effectivement, votre réponse a été très rapide

    Vous étiez en train de la guetter ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Bonjour,

    Il semble que l'utilitaire bcp existe seulement en SQL SERVER 2005 non ? Je suis en 2000 est-ce qu'il y a un équivalent autre que les DTS bien sur

    Merci

  6. #6
    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 : 44
    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
    Par défaut
    Bonjour,

    BCP existe sous SQL Server 2000. C'est un utilitaire en ligne de commande
    Vous pouvez aussi faire avec la commande SQL : BULK INSERT ...

  7. #7
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Haha c'est mauvais de ma part merci bcp alors bonne fin de journée.

  8. #8
    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 : 44
    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
    Par défaut
    merci bcp
    A vous aussi

  9. #9
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Humm j'essais tjrs de faire rouler l'utilitaire bcp mais je voudrais le faire via des commandes T-SQL si possible bien sur.

    Voici mon code :

    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
     
    DECLARE @NomFichier VARCHAR(50)
    DECLARE @CommandeSQL VARCHAR(1000)
    DECLARE @Resultat INT
     
    SELECT @NomFichier = DATENAME(month,getdate()) + CAST(DATEPART(year,getdate()) as varchar(4))
     
     
    SET @CommandeSQL = 'bcp "select noauto,valeur from TCR02BDDEV00001\BDDEV.ISAProxyReports.dbo.Ent_ClientIP" queryout C:\@nomFichier -T -t, -c'
     
    EXEC @Resultat = master..xp_cmdshell @CommandeSQL
     
    IF (@Resultat = 0)
    BEGIN
    print 'Succès'
    END
    ELSE
    BEGIN
    print 'Erreur'
    END
    Voici l'erreur que ça me génère :
    ----------------------------------------
    SQLState = 08001, NativeError = 17
    Error = [Microsoft][ODBC SQL Server Driver][Shared Memory]Ce serveur SQL n'existe pas ou son accès est refusé.
    SQLState = 01000, NativeError = 2
    Warning = [Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()).
    NULL

    Merci

  10. #10
    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 : 44
    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
    Par défaut
    Bonjour,

    Si votre requête porte sur le serveur local, votre commande devrait être

    'bcp "select noauto, valeur from ISAProxyReports.dbo.Ent_ClientIP" queryout C:\@nomFichier -T -t, -c'

    Sinon préférez l'utilitaire (toujours en ligne de commande) sqlcmd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlcmd -S monServeur\monInstance -d maBD -U monUser -P monMotDePasse -Q "maRequête" -o monFichierDeSortie.txt
    @++

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

Discussions similaires

  1. [XL-2010] Importer des données dans un fichier excel
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/03/2015, 16h54
  2. Importer des données dans un fichier .csv
    Par programation dans le forum Simulink
    Réponses: 1
    Dernier message: 08/07/2011, 08h41
  3. [XL-2003] Importation de données dans un fichier et recherche d'equiv pour copie.
    Par Arno_ap dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/04/2011, 11h49
  4. Réponses: 7
    Dernier message: 10/09/2009, 10h37
  5. Réponses: 3
    Dernier message: 13/12/2004, 13h54

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