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 20/12/2010, 16h58   #1
Membre habitué
 
Inscription : juillet 2006
Messages : 282
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 282
Points : 106
Points : 106
Par défaut SQL SERVER 2005 - Export tables en CSV

Bonjour tout le monde,

J'ai une cinquantaine de tables à exporter de SQL vers CSV. Comment faire pour automatiser l'export SVP.

Merci.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 17h11   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Bonsoir,

Quelle version de SQL Server ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 22h34   #3
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
C'est du SQL SERVER 2005, mais pour plus de d'info sur l'édition. Donne nous le résultat de cette commande

Code :
1
2
3
4
5
6
7
SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion
 
,SERVERPROPERTY('ProductLevel') AS ProductLevel
 
,SERVERPROPERTY('Edition') AS Edition
 
,SERVERPROPERTY('EngineEdition') AS EngineEdition
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 04h57   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 766
Points : 17 766
utilisez bcp.exe ou SSIS.

Pour bcp vous pouvez le faire sure toutes vos tables via du SQL dynamique appelant la procédure xp_cmdshell.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 05h24   #5
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 663
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 663
Points : 8 697
Points : 8 697
Bonjour,

Vous pouvez faire cela à l'aide de l'utilitaire BCP et d'une table contenant le nom des tables à exporter :

Code :
1
2
3
4
5
CREATE TABLE bcp_tables_to_export_in_CSV_file
(
	table_name sysname CONSTRAINT PKbcp_tables_to_export_in_CSV_file PRIMARY KEY
	, exported bit NOT NULL CONSTRAINT DFbcp_tables_to_export_in_CSV_file DEFAULT 0
)
Ajouter le nom des tables comme suit pour chacune d'entre-elles :

Code :
INSERT	bcp_tables_to_export_in_CSV_file (table_name) VALUES ('maTable')
Ceci fonctionne pour le cas où toutes les tables sont dans le même schéma, par défaut dbo.

Utilisez ensuite la procédure stockée suivante :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
ALTER PROCEDURE proc_export_tables_to_CSV_file
	@_export_file nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checkiing directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	DECLARE	@directory nvarchar(255)
	SELECT	@directory = LEFT(@_export_file, LEN(@_export_file)-  CHARINDEX('\', REVERSE(@_export_file)))
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @directory
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does NOT exist. CREATE it before executing this procedure.', 16, 1, @directory)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name
			+ ' out "' + @_export_file + '" -c -T -t, –S' + @@SERVERNAME
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
	END
END
@++
__________________
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 21/12/2010, 12h29   #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
@ elsuket
Très bonne idée

Sur une instance par défaut ça marche nickel, mais sur une instance nommée, il y a un petit souci sur la ligne

Code :
' out "' + @_export_file + '" -c -T -t, –S' + @@SERVERNAME
Que j'ai remplacé par

Code :
' out "' + @_export_file + '" -c -T -t, -S ' +'"'+ @@SERVERNAME +'"'
ça me donne des idées pour faire de cette manière là des imports.

Thanks
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 13h02   #7
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Pour SSIS aussi (ben oui faut bien donner toutes les solutions ) il suffit de faire un script qui liste l'ensemble de vos tables et integrer cela dans un foreach loop qui exportera les donnees de vos tables une a une.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h34   #8
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
Encore un correctif,

Description du bug
------------------
Lorsqu'il y a plus d'une ligne dans la table bcp_tables_to_export_in_CSV_file il y a une boucle infinie sur :

Code :
1
2
UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
SET	exported = 1


Correctif
------------------
Code :
1
2
3
UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
SET	exported = 1
WHERE	exported = 0

Procédure stockée après correction
--------------------------------

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
ALTER PROCEDURE proc_export_tables_to_CSV_file
	@_export_file nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checkiing directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	DECLARE	@directory nvarchar(255)
	SELECT	@directory = LEFT(@_export_file, LEN(@_export_file)-  CHARINDEX('\', REVERSE(@_export_file)))
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @directory
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does NOT exist. CREATE it before executing this procedure.', 16, 1, @directory)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name
			+ ' out "' + @_export_file + '" -c -T -t, -S ' +'"'+ @@SERVERNAME +'"'
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
		WHERE exported = 0
	END
END
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 17h30   #9
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
3ème BUG : Description
---------------

L'ajout (APPEND) dans le fichier de sortie ne s'effectue pas.
le dernier export de la dernière table écrase les données existant dans le fichier.
Résultat : le fichier contient uniquement les données de la dernière table exportée


Correction
----------------------

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
ALTER PROCEDURE proc_export_tables_to_CSV_file
	@_export_file nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checkiing directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	DECLARE	@directory nvarchar(255)
	SELECT	@directory = LEFT(@_export_file, LEN(@_export_file)-  CHARINDEX('\', REVERSE(@_export_file)))
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @directory
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does NOT exist. CREATE it before executing this procedure.', 16, 1, @directory)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
	DECLARE @_export_file_temp varchar(1024)
	DECLARE @append varchar(1024)
	SET @_export_file_temp = 'c:\temp\file_temp.csv'
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
 
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + @_export_file_temp  +'" -c -T -t, -S ' +'"'+ @@SERVERNAME +'" ' 
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		-- Ajout dans le fichier de sortie (Ajouté par zinzineti)
		SET @append = 'type ' + @_export_file_temp + ' >> ' +  @_export_file 
		EXEC master..xp_cmdshell @append
		-- MAJ table des tables (Modifiée par zinzineti)
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
		WHERE exported = 0
	END
END
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 08h55   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 663
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 663
Points : 8 697
Points : 8 697
Merci pour lé débuggage Zinzineti

On peut aussi penser à exporter avec un fichier par table, ce qui fait que l'on peut se passer de l'append :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
ALTER PROCEDURE proc_export_tables_to_CSV_file
	@_directory_path nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checking directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @_directory_path
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does not exist. Create it before executing this procedure.', 16, 1, @_directory_path)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
		, @export_file_temp varchar(1024)
		, @append varchar(1024)
		, @table_name sysname
 
	SET	@_export_file_temp = @directory + '\file_temp' + @file_extension
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
 
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + table_name  + '.csv" -c -T -t, -S ' + '"' + @@SERVERNAME + '"' 
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		-- MAJ table des tables (Modifiée par zinzineti)
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
		WHERE	exported = 0
	END
END
Et donc d'écrire une procédure stockée de chargement des données à partir des fichiers, à l'aide de BULK INSERT, puisqu'il est fort probable que les tables n'aient pas la même structure.

@++
__________________
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 23/12/2010, 11h17   #11
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
On peut aussi penser à exporter avec un fichier par table, ce qui fait que l'on peut se passer de l'append :

Et donc d'écrire une procédure stockée de chargement des données à partir des fichiers, à l'aide de BULK INSERT, puisqu'il est fort probable que les tables n'aient pas la même structure.

@++
Oui c'est ce que je pense aussi, vu que la demande initiale de ash_rmy
est :
Citation:
ash_rmy
J'ai une cinquantaine de tables à exporter de SQL vers CSV. Comment faire pour automatiser l'export SVP.

J'ai relevé des coquilles dans le script que tu proposes pour cette opération :

1.) les paramètres suivants sont inutiles :
--> @directory
--> @export_file_temp
--> @_export_file_temp (celui-ci n'était pas déclaré !)
--> @append

2.) la ligne suivante est inutile :

--> SET @_export_file_temp = @_directory_path + '\file_temp' + @file_extension


3.) J'ai remplacé la ligne suivante

Code :
SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + table_name  + '.csv" -c -T -t, -S ' + '"' + @@SERVERNAME + '"'
par

Code :
SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + @_directory_path + table_name  + '.csv" -c -T -t, -S ' + '"' + @@SERVERNAME + '"'

Et finalement

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
EXEC proc_export_tables_to_CSV_file 'E:\'
*/
ALTER PROCEDURE proc_export_tables_to_CSV_file
	@_directory_path nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checking directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @_directory_path
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does not exist. Create it before executing this procedure.', 16, 1, @_directory_path)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
	--	, @export_file_temp varchar(1024) (modifié par zinzineti)
	--	, @append varchar(1024)           (modifié par zinzineti)
		, @table_name sysname
 
	--SET	@_export_file_temp = @_directory_path + '\file_temp' + @file_extension   (modifié par zinzineti)
 
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
	    --(modifié par zinzineti)
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + @_directory_path + table_name  + '.csv" -c -T -t, -S ' + '"' + @@SERVERNAME + '"' 
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		-- MAJ table des tables (Modifiée par zinzineti)
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
		WHERE	exported = 0
	END
END
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2010, 11h12   #12
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 663
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 663
Points : 8 697
Points : 8 697
Décidément les vacances me sont bien nécessaires !
Encore merci et Joyeux Noël à toi

@++
__________________
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 26/12/2010, 16h35   #13
Membre habitué
 
Inscription : juillet 2006
Messages : 282
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 282
Points : 106
Points : 106
Citation:
Envoyé par zinzineti Voir le message
C'est du SQL SERVER 2005, mais pour plus de d'info sur l'édition. Donne nous le résultat de cette commande

Code :
1
2
3
4
5
6
7
SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion
 
,SERVERPROPERTY('ProductLevel') AS ProductLevel
 
,SERVERPROPERTY('Edition') AS Edition
 
,SERVERPROPERTY('EngineEdition') AS EngineEdition
Bonjour tout le monde,

merci beaucoup pour votre aide.

Déjà en exécutant la requête ci-dessous, voici ce que j'ai :

ProductVersion = 9.00.3073.00
ProductLevel = SP2
Edition = Enterprise Edition (64-bit)
EngineEdition = 3

Quand j'exécute la procédure proc_export_tables_to_CSV_file, il m'affiche en erreur :

Code :
Nom d'objet 'proc_export_tables_to_CSV_file' non valide.
merci pour votre aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 14h41   #14
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 ash_rmy Voir le message
Quand j'exécute la procédure proc_export_tables_to_CSV_file, il m'affiche en erreur :

Code :
Nom d'objet 'proc_export_tables_to_CSV_file' non valide.
merci pour votre aide.

ash_rmy.
Il faut d'abord créer la procédure avant de l'exécuter. remplace le "ALTER" par "CREATE". Voir ci-dessous

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
EXEC proc_export_tables_to_CSV_file 'E:\'
*/
CREATE PROCEDURE proc_export_tables_to_CSV_file
	@_directory_path nvarchar(255)
AS
BEGIN
	SET NOCOUNT ON
 
	-- Checking directory existence
	DECLARE	@tb_directory_exists TABLE
	(
		file_exists bit
		, file_is_a_directory bit
		, parent_directory_exists bit
	)
 
	INSERT	@tb_directory_exists
	EXEC	xp_fileexist @_directory_path
 
	IF EXISTS
	(
		SELECT	*
		FROM	@tb_directory_exists
		WHERE	file_is_a_directory = 0
	)
	BEGIN
		RAISERROR('The "%s" directory does not exist. Create it before executing this procedure.', 16, 1, @_directory_path)
		RETURN
	END
 
	-- Proceeding export
	UPDATE	dbo.bcp_tables_to_export_in_CSV_file
	SET	exported = 0
 
	DECLARE @bcp varchar(1024)
	--	, @export_file_temp varchar(1024) (modifié par zinzineti)
	--	, @append varchar(1024)           (modifié par zinzineti)
		, @table_name sysname
 
	--SET	@_export_file_temp = @_directory_path + '\file_temp' + @file_extension   (modifié par zinzineti)
 
 
	WHILE EXISTS
	(
		SELECT	*
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
	)
	BEGIN
	    --(modifié par zinzineti)
		SELECT	TOP (1) @bcp = 'BCP ' + DB_NAME() + '.dbo.' + table_name + ' out "' + @_directory_path + table_name  + '.csv" -c -T -t, -S ' + '"' + @@SERVERNAME + '"' 
		FROM	dbo.bcp_tables_to_export_in_CSV_file
		WHERE	exported = 0
 
		PRINT	@bcp
 
		EXEC	xp_cmdshell @bcp
 
		-- MAJ table des tables (Modifiée par zinzineti)
		UPDATE	TOP (1) dbo.bcp_tables_to_export_in_CSV_file
		SET	exported = 1
		WHERE	exported = 0
	END
END
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 09h46   #15
Membre habitué
 
Inscription : juillet 2006
Messages : 282
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 282
Points : 106
Points : 106
merci beaucoup pour votre aide. ça marche

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h52.


 
 
 
 
Partenaires

Hébergement Web