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 :

Problème de tabulation / colonnes d'une requête sql en sortie vers un fichier txt


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut Problème de tabulation / colonnes d'une requête sql en sortie vers un fichier txt
    Bonjour, j'ai récupéré un script SQL sur le net qui permet d'afficher les opérations d'autogrow. Malheureusement, je n'y connais rien en SQL et j'ai un pb de sortie de fichier.
    Je redirige la requête vers un fichier avec la commande suivante :


    sqlcmd -W -s " " -E -S %INSTANCESQL% -i ".\check_autogrow.sql" -o ".\logs\check_autogrow.log"

    Je suis obligé d'utiliser l'option "-W" et "-s" car sinon, j'ai des espaces entre les colonnes de 12 km ce qui rend le fichier peu lisible.
    Malgré tout, ça n'est pas top car les entêtes de colonnes ne tombent pas bien en face des données :-\
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Changed database context to 'master'.
    SQL_Instance	Database_Name	Logical_File_Name	Duration_MS	Start_Time	Change_In_Size_MB
    ------------	-------------	-----------------	-----------	----------	-----------------
    NYPLTEDP\IG9TEST	tempdb	templog	3	May  9 2014  4:37PM	.24
    NYPLTEDP\IG9TEST	msdb	MSDBLog	133	May  9 2014  4:37PM	.31
    NYPLTEDP\IG9TEST	msdb	MSDBLog	6	May  9 2014  4:37PM	.38
    NYPLTEDP\IG9TEST	msdb	MSDBLog	6	May  9 2014  4:37PM	.38
    NYPLTEDP\IG9TEST	msdb	MSDBLog	276	May  9 2014  4:37PM	.44
    NYPLTEDP\IG9TEST	msdb	MSDBLog	13	May  9 2014  4:37PM	.50
    NYPLTEDP\IG9TEST	tempdb	templog	6	May  9 2014  4:37PM	.24
    Bref, je pense que le pb se situe dans le script sql que voici :


    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
    USE [master]
    GO
     
    BEGIN TRY
        IF (SELECT CONVERT(INT,value_in_use) FROM sys.configurations WHERE NAME = 'default trace enabled') = 1
        BEGIN
            DECLARE @curr_tracefilename VARCHAR(500);
            DECLARE @base_tracefilename VARCHAR(500);
            DECLARE @indx INT;
     
            SELECT @curr_tracefilename = path FROM sys.traces WHERE is_default = 1;
            SET @curr_tracefilename = REVERSE(@curr_tracefilename);
            SELECT @indx  = PATINDEX('%\%', @curr_tracefilename) ;
            SET @curr_tracefilename = REVERSE(@curr_tracefilename) ;
            SET @base_tracefilename = LEFT( @curr_tracefilename,LEN(@curr_tracefilename) - @indx) + '\log.trc'; 
            SELECT
                --(DENSE_RANK() OVER (ORDER BY StartTime DESC))%2 AS l1,
                ServerName AS [SQL_Instance],
                --CONVERT(INT, EventClass) AS EventClass,
                DatabaseName AS [Database_Name],
                Filename AS [Logical_File_Name],
                (Duration/1000) AS [Duration_MS],
                CONVERT(VARCHAR(50),StartTime, 100) AS [Start_Time],
                --EndTime,
                CAST((IntegerData*8.0/1024) AS DECIMAL(19,2)) AS [Change_In_Size_MB]
            FROM ::fn_trace_gettable(@base_tracefilename, default)
            WHERE
                EventClass >=  92
                AND EventClass <=  95
                --AND ServerName = @@SERVERNAME
                --AND DatabaseName = 'myDBName'  
            ORDER BY StartTime ASC ;  
        END    
        ELSE   
            SELECT -1 AS l1,
            0 AS EventClass,
            0 DatabaseName,
            0 AS Filename,
            0 AS Duration,
            0 AS StartTime,
            0 AS EndTime,
            0 AS ChangeInSize 
    END TRY 
    BEGIN CATCH 
        SELECT -100 AS l1,
        ERROR_NUMBER() AS EventClass,
        ERROR_SEVERITY() DatabaseName,
        ERROR_STATE() AS Filename,
        ERROR_MESSAGE() AS Duration,
        1 AS StartTime, 
        1 AS EndTime,
        1 AS ChangeInSize 
    END CATCH

    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 117
    Points
    117
    Par défaut
    Bonjour,

    Si vous supprimez les espaces de fin (-W) vous privez les données du seul moyen de s'aligner correctement.
    sinon, j'ai des espaces entre les colonnes de 12 km
    Personnellement je vois deux approches :
    - Passer le -s " " en -s ";" et ouvrir le fichier via Excel
    - Gérer le format maxi des données sur l'instruction SELECT et supprimer le -W de la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT(Col1+ REPLICATE(' ', 50), 50)
    pour définir une colonne 1 sur 50 positions.

    Sinon pour conserver mordicus les tabulations voir ici.

    HTH,

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Merci pour ta réponse. Testé et approuvé.

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

Discussions similaires

  1. Renommer des colonnes dans une requête SQL en utilisant bcp
    Par Polochon_77 dans le forum Développement
    Réponses: 2
    Dernier message: 14/01/2012, 18h50
  2. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  3. tester la valeur d'une colonne dans une requête sql
    Par 461219 dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 02/10/2008, 11h37
  4. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53
  5. [VB]Problème avec une requête SQL
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/03/2006, 17h47

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