Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 16h30   #1
Invité régulier
 
Inscription : novembre 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 34
Points : 8
Points : 8
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.
jlppap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 16h32   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
SSIS
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 06h51   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
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 :
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 :
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

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h38   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
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+
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 04h13   #5
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
Un tuto ! Un tuto ! Un tuto !

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 10h30   #6
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
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+
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 14h57   #7
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
Fais un CHECKPOINT, ça va aider
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 11h55   #8
Invité régulier
 
Inscription : novembre 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 34
Points : 8
Points : 8
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
jlppap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h35   #9
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
Dans ce cas prenez SQL Server 2008 Developer Edition

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h01.


 
 
 
 
Partenaires

Hébergement Web