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

MS SQL Server Discussion :

export dans un fichier .txt


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    retraité Informatique
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : retraité Informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 36
    Points
    36
    Par défaut export dans un fichier .txt
    Bonjour,
    sous SQL server 2005, il faudrait extraire plusieurs champs de 2 tables dans un fichier .txt ;
    cette extraction ne doit se faire seulement si la valeur d'un champ dans une de ces tables est = 1 .
    Serait-il possible dans le même temps de mettre à jour un champ (mettre 1)
    pour indiquer que l'export a bien été effectué pour cette donnée de la table.
    Est-ce assez clair ?
    J'ai cherché, mais étant plus que débutant en SQL je ne m'en sors pas.
    MERCI d'avance pour votre aide.

  2. #2
    Membre émérite

    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
    Points : 2 856
    Points
    2 856
    Par défaut
    SSIS

  3. #3
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Ben alors zinzineti, un peu court cette réponse
    Étant en plus profane en SSIS, j'aurai bien aimé plus de détails !

    Voici une solution basée sur l'utilitaire BCP.

    Nous créons une table de paramétrage comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE T_EXPORT_SETTINGS
    (
    	export_table sysname CONSTRAINT PKT_EXPORT_SETTINGS PRIMARY KEY
    	, export_columns_list varchar(max) NOT NULL CONSTRAINT CHKT_EXPORT_SETTINGS__export_columns_list CHECK (export_columns_list NOT LIKE '% %')
    	, exported bit NOT NULL CONSTRAINT DFT_EXPORT_SETTINGS__exported DEFAULT 0
    )
    GO
    Dans laquelle la colonne :

    - export_table sera valuée au nom de la table que l'on souhaite exporter,
    - export_columns_list sera valuée à la liste des colonnes de la table à exporter, les noms des colonnes étant séparés par des virgules

    La procédure suivante permet alors de réaliser l'export :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    CREATE PROCEDURE prc_export_tables
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	DECLARE @bcp varchar(1024)
    		, @bcp_exec varchar(1024)
    		, @sql varchar(1024)
    		, @export_table sysname
    		, @export_columns_list varchar(max)
     
    	SELECT	@bcp = 'BCP "SELECT @listeColonnes@ FROM ELSUKET.dbo.@maTable@ WHERE flag = 0" queryout @file@ -S "' + @@SERVERNAME + '" -T -c'
    		, @export_table = ''
     
    	UPDATE	dbo.T_EXPORT_SETTINGS
    	SET	exported = 0
     
    	WHILE @export_table IS NOT NULL
    	BEGIN
    		SET @export_table = ''
     
    		SELECT	TOP (1) @export_table = export_table
    			, @export_columns_list = export_columns_list
    		FROM	dbo.T_EXPORT_SETTINGS
    		WHERE	exported = 0
     
    		SET	@export_table = NULLIF(@export_table, '')
     
    		SET @bcp_exec = REPLACE(@bcp, '@maTable@', @export_table)
    		SET @bcp_exec = REPLACE(@bcp_exec, '@listeColonnes@', @export_columns_list)
    		SET @bcp_exec = REPLACE(@bcp_exec, '@file@', 'C:\' + @export_table + '.txt')
     
    		SET @sql = 'UPDATE dbo.' + @export_table + ' SET flag = 1 WHERE flag = 0'
     
    		EXEC	xp_cmdshell @bcp_exec
    		EXEC	(@sql)
     
    		UPDATE	TOP (1) dbo.T_EXPORT_SETTINGS
    		SET	exported = 1
    		WHERE	exported = 0
    	END
    END
    GO
    De cette façon, si vous souhaitez :
    - ajouter des tables à exporter ou à l'inverse en supprimer,
    - changer la liste des colonnes à exporter

    il vous suffit simplement de maintenir la table T_EXPORT_SETTINGS

    @++

  4. #4
    Membre émérite

    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
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Ben alors zinzineti, un peu court cette réponse
    Étant en plus profane en SSIS, j'aurai bien aimé plus de détails !
    Bonjour,

    Oui j'avoue c'est un peu court
    SSIS : c'est la possibilité d'utiliser simplement des composants tout fait (connexion à la base, export, état des traitements (OK ou KO) ,gestions des erreurs,..) et de faire du Drag And Drop pour réaliser l'export. Aussi voir l’enchaînement des différentes étapes de traitement fait du bien au sens [on en a plein les yeux avec les couleurs vertes (quand c'est ok) des blocs ]

    A+

  5. #5
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Un tuto ! Un tuto ! Un tuto !

    @++

  6. #6
    Membre émérite

    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
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Un tuto ! Un tuto ! Un tuto !

    @++
    J'y pense
    J’enregistre ça dans un coin de mon petit cerveau.
    Je compte sur le Lazywriter de mon cerveau pour écrire un petit topo sur ce sujet

    A+

  7. #7
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Fais un CHECKPOINT, ça va aider

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    retraité Informatique
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : retraité Informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    et MERCI à tous pour votre aide.
    je n'ai pu répondre avant étant absent 2 jours.
    J'ai lu toutes les réponses, et malheureusement ... pour moi, j'ai oublié de préciser que la version de SQL était 2005 EXPRESS, donc incomplète, et en plus je n'ai pas Visual studio; beaucoup de choses en fait manquaient.
    Comme c'est évidemment pour une entreprise, je vais demander s'il serait possible d'avoir ces 2 prog. avec licences.
    Si vous avez une autre idée, je suis preneur, sinon la demande est faite, il n'y a plus qu'à attendre.
    Encore MERCI

  9. #9
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Dans ce cas prenez SQL Server 2008 Developer Edition

    @++

Discussions similaires

  1. 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
  2. Date dans un fichier txt
    Par cali1983 dans le forum C++
    Réponses: 6
    Dernier message: 23/05/2005, 17h35
  3. Réponses: 10
    Dernier message: 05/10/2004, 11h28
  4. [langage] tabulation dans un fichier txt
    Par TigreRouge dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2004, 17h36

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