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

Outils SQL Server Discussion :

sqlcmd paramétrage pour créer des csv


Sujet :

Outils SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut sqlcmd paramétrage pour créer des csv
    Bonjour,
    Je génère des fichiers csv (plat séparé par des ";")
    de la façon suivante;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SET SQLCMDUSER=sa
    set SQLCMDPASSWORD=machin
    set SQLCMDSERVER=monpc\sqlexpress
    set SQLCMDDBNAME=moninstance
    set SQLCMDCOLSEP=;
     
    sqlcmd -W -Q "exec MA_Procedure_stockée" -o compteurs.csv
    J'ai deux problèmes dans le fichier de sorties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PAYS_ORIGINE_ISO;nbre_of;TOTAL_QUANTITE;nbre_nomenclature
    ----------------;-------;--------------;-----------------
    ES;15;25;10
    FR;11;NULL;6
    J'aimerasi supprimer de cette sortie la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ----------------;-------;--------------;-----------------
    et j'aimerais que NULL n'apparaissent pas.
    Ce qui donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PAYS_ORIGINE_ISO;nbre_of;TOTAL_QUANTITE;nbre_nomenclature
    ES;15;25;10
    FR;11;;6
    Bien évidemment j'ai lu la doc sur sqlcmd mais je n'ai pas trouvé les options permettant de réaliser cela.

    Si vous avez des idées.
    Merci de votre aide.
    PS : Pour le problème du NULL, je ne souhaite pas utiliser coalesce, car cela m'obligerait à caster mes entiers en chaine de caractères, ce que je ne souhaite pas.
    Soazig

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    vous ne devez pas utiliser SQMCMD mais bcp.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    bonjour,
    ce sont des procédures stockées que j'appelle, et certaines ont des paramètres or il me semble que bcp ne fonctionne qu'avec les tables ou les vues.
    Cordialement
    Soazig

  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 : 42
    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,

    Et aussi avec des requêtes, avec le commutateur queryout.

    Que vous utilisez l'utilitaire BCP ou bien SQLCMD dans une procédure stockée, il vous faut stocker la commande SQLCMD :

    - dans une variable et la faire exécuter avec la procédure stockée étendue master.dbo.xp_cmdshell (et son option NO_OUTPUT)
    - dans un fichier batch DOS

    Si vous choisissez l'option xp_cmdshell (qui est déconseillée) :

    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
    44
    45
    46
    47
    48
    49
    50
     
    -- Vérifie que l'utilisation de la procédure stockée étendue xp_cmdshell est autorisée
    IF
    (
    	SELECT value_in_use
    	FROM sys.configurations
    	WHERE name = 'xp_cmdshell'
    ) = 0
    BEGIN
    	-- L'activation de la procédure stockée étendue xp_cmdshell
    	-- requiert le paramétrage des options avancées
    	IF 
    	(
    		SELECT value_in_use
    		FROM sys.configurations
    		WHERE name = 'show advanced options'
    	) = 0
    	BEGIN
    		-- Activation du paramétrage des options avancées
    		EXEC sp_configure 'show advanced options', '1'
    		RECONFIGURE
     
    		-- Activation de la procédure stockée étendue xp_cmdshell
    		EXEC sp_configure 'xp_cmdshell', '0'
    		RECONFIGURE
     
    		-- Désactivation du paramétrage des options avancées
    		EXEC sp_configure 'show advanced options', '0'
    		RECONFIGURE
    	END
    	ELSE
    	BEGIN
    		-- Activation du paramétrage des options avancées
    		EXEC sp_configure 'xp_cmdshell', '1'
    		RECONFIGURE
     
    		-- Désactivation du paramétrage des options avancées
    		EXEC sp_configure 'show advanced options', '0'
    		RECONFIGURE
    	END
    END
     
    -- Création de la commande BCP
    DECLARE @BCP VARCHAR(255)
    SET @BCP = 'bcp maBD.monSchema.maTable out C:\TEST.txt -SmonServeur\monInstance -UmonLogin -PmonMotDePasse -c'
    -- Si vous utilisez une connexion approuvée : SET @BCP = 'bcp maBD.monSchema.maTable out C:\TEST.txt -c -T'
    -- Si vous devez spécifier une requête : SET @BCP = 'bcp "maRequêteSQL" queryout C:\TEST.txt -c -T'
     
    -- Exécution de la commande BCP
    EXEC master.dbo.xp_cmdshell @BCP, NO_OUTPUT
    A la fin du code figurent les commandes BCP que vous pouvez utiliser, notamment avec le commutateur queryout.

    Au préalable vous devez vérifier que les connexions TCP/IP et canaux nommés sont activés pour votre instance.
    Vous pouvez faire cela avec l'outil de gestion de la surface d'exposition ou avec la console de gestion de la configuration de SQL Server
    (chercher dans le menu démarrer ou bien Démarrer / Exécuter / tapez "SQLServerManager.msc")

    Faites de même pour les deux :



    Le cas échéant, si cela vous est demandé, vous devrez redémarrer le service SQL Server (ce qui vous fera au passage perdre toute la mise en cache !)



    @++

Discussions similaires

  1. [XML word] problème pour créer des puces
    Par ratapapa dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2005, 13h52
  2. Outil pour créer des interfaces graphiques
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 11/07/2005, 16h48
  3. pb pour créer des index [too many keys]
    Par Issam dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2005, 20h58
  4. [CR] Version nécessaire pour créer des fichiers DSR ?
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/11/2003, 09h01
  5. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 14h06

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