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 :

SET NOCOUNT sans effet avec exec master..xp_fileexist


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut SET NOCOUNT sans effet avec exec master..xp_fileexist
    Bonjour à tous

    J'ai créé une procédure qui me permet d'exporter les données d'une table dans un fichier csv, à l'aide de la commande print, en désactivant la sortie avec 'SET NOCOUNT ON' de l'affectation du nombre de lignes, et en redirigeant la sortie de mon script vers un fichier.
    Tout fonctionnait parfaitement, jusqu'au moment où j'ai rajouté exec master..xp_fileexist, pour vérifier l'existence de mon fichier.
    Il me rajoute dans mon fichier '(1 ligne affect‚e)', alors qu'il ne le fait pas pour les autres instructions...
    Y'a t il une solution pour cela ?
    Merci d'avance pour votre aide.

    ----------------------------------------------
    SQL SERVER
    8.00.194 RTM Personal Edition EngineEdition 1

  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 997
    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 997
    Billets dans le blog
    6
    Par défaut
    NON, car c'est dans la proc xp que cette ligne est renvoyée et à moins de la redévelopper en C...
    Mais pourquoi utiliser la commande PRINT alors que vous avez la possibilité d'utiliser bcp.exe qui est fait pour faire des import/export ????
    (en 1000 fois plus rapide)

    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 confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Merci pour la réponse!
    Effectivement, c'est logique, et donc incontournable...
    Je connais bcp et SSIS, mais la technique du print, me paraissait plus simple à mettre en oeuvre et efficace à la fois.
    Je ne souhaite pas exporter une table en fait. J'ai une table avec une dizaine de champs, sur laquelle je fais une lecture, et je produis mon csv à partir de cette lecture. Le csv résultant doit faire une quarantaine de champs, dont certains sont vides, et où les autres sont construits à partir des différentes données de ma table intermédiaire.
    Cela me convenait tout à fait jusqu'à l'utilisation de ce xp_fileexist...
    Bref.. je vais voir autrement..
    Merci encore!

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Pour préciser un peu plus mon choix ... le fichier que je dois générer a un format spécial : voici à quoi doit ressembler mon fichier csv
    donneefixe1;donneefixe1
    A_row1;A_row1;A_row1;A_row1;A_row1;A_row1;
    B_row1;B_row1;B_row1;B_row1;
    A_row2;A_row2;A_row2;A_row2;A_row2;A_row2;
    B_row2;B_row2;B_row2;B_row2;
    A_row3;A_row3;A_row3;A_row3;A_row3;A_row3;
    B_row3;B_row3;B_row3;B_row3;
    A_row4;A_row4;A_row4;A_row4;A_row4;A_row4;
    B_row4;B_row4;B_row4;B_row4;

    J'ai donc dans ma procédure qui commence par afficher la première ligne avec print, et ensuite un curseur qui boucle sur mes enregistrements, et qui produit chaque ligne à l'aide de deux print

    Avec bcp, j'ai plus de contraintes et ça reste tabulaire et formaté...

  5. #5
    Membre Expert

    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
    Par défaut
    Peux-tu montrer ton script ?
    Etienne ZINZINDOHOUE
    Billets-Articles

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    CREATE PROCEDURE bdd.pr_export
    AS
    BEGIN
     
    set nocount on
    set ansi_warnings off
     
    declare @v_code varchar(20)
    declare @d_datehdeb datetime
    declare @d_datehfin datetime
     
    declare @v_service varchar(4)
    declare @v_pcharge varchar(10)
    declare @v_site varchar(5)
    declare @d_datecre datetime
    declare @v_matri varchar(20)
    declare @i_export integer
     
    declare @v_datehdeb varchar(20)
    declare @v_datehfin varchar(20)
     
    declare @v_datecre varchar(20)
    declare @v_etab varchar(2)
     
     
     
    declare c_lect cursor for   
    select 
      CODE,
      DATEHDEB,
      [SECTION],
      PCHARGE,
      [SITE],
      DATECRE,
      UTILCRE,
      EXPORT
    from
      table_origine
      where export = 0 or export is null or export = 1
      order by  code  asc
     
    open c_lect   
    fetch c_lect into  
    	@v_code, 
     	@d_datehdeb,
    	@v_service, 
    	@v_pcharge, 
    	@v_site, 
    	@d_datecre,
    	@v_matri, 
    	@i_export
     
     
    	-- 1ère ligne type echange données 
    if (@@fetch_status = 0) print  'exchangeInterface;WO_IN;'
     
     
    while (@@fetch_status = 0)   
    begin   
    	set @v_code = replicate (0,6-len(cast(@v_code as varchar)))+cast(@v_code as varchar)
    	set @v_datecre = convert(varchar(20),@d_datecre,103) + ' ' + convert(varchar(20),@d_datecre,108)
        set @v_datehdeb = convert(varchar(20),@d_datehdeb,103) + ' ' + convert(varchar(20),@d_datehdeb,108)
        set @d_datehfin = dateadd(mi,1,@d_datehdeb)
        set @v_datehfin = convert(varchar(20),@d_datehfin,103) + ' ' + convert(varchar(20),@d_datehfin,108)
        set @v_etab = case @v_site when '1' then 'CQ' when '5' then 'MJ' else '0' end
     
        -- WO ligne éléments 
        print
        'WO' + ';' + 
        'OT-GA-' + @v_code  + ';' +
        'OT-GA-' + @v_code  + ';' +
        'Panne arret machine' + ';' +
     	@v_datehdeb + ';' +
        @v_datehfin + ';' +
        ';' +					-- 1 champs vide
        'URGENT;' +
        'PANNE;' +
    	@v_service + ';' +
        ';;;;' +				-- 4 champs vides
        'TRUE;' +
        ';;;;;' +				-- 5 champs vides
    	@v_pcharge + ';' +
        ';;;;;;;' +				-- 7 champs vides
    	@v_etab + ';' +
        ';;;;' +				-- 4 champs vides
    	@v_datecre + ';' +
    	@v_matri + ';' +
        ';;;;;;;;;;;;;;;;;;;' 	-- 19 champs vides
     
        -- WOSTATUS ligne status 
        print 
        'WOSTATUS' + ';' + 
        'INPROGRESS' + ';' + 
        @v_matri + ';' +
        @v_datehdeb 
     
     
        update table_origine set export = 1 where code = @v_code
     
        fetch c_lect into  
          @v_code, 
          @d_datehdeb, 
          @v_service, 
          @v_pcharge, 
          @v_site, 
          @d_datecre,
          @v_matri, 
          @i_export 
    end   
    close c_lect   
    deallocate c_lect    
     
     
    END

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

Discussions similaires

  1. Modifications dans tableau avec 2 foreach sans effet
    Par EIN-LESER dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2013, 15h12
  2. [JSTL] balise c:set sans effet sur $(nomDeVariable)
    Par olivier57b dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/09/2010, 17h22
  3. Lancer des effets avec Action Script, sans changer d'état
    Par black is beautiful dans le forum Flex
    Réponses: 4
    Dernier message: 24/02/2010, 09h24
  4. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 10h32

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