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

MS SQL Server Discussion :

BDD et fichiers


Sujet :

MS SQL Server

  1. #1
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut BDD et fichiers
    Bonjour,

    Je souhaiterais pouvoir travailler sur des fichiers sur le serveur via des requêtes sur la BDD.
    J'ai vu qu'il était possible d'utiliser OLE pour ca.
    http://www.developpez.net/forums/sho...hlight=fichier


    Mais n'étant ni un expert des procédures stockés, ni de OLE, j'ai un peu de mal ^^

    Ce que j'aimerais faire, c'est dans un premier temps, récupérer tous les noms de fichiers d'un répertoire passé en paramètre, puis dans un second temps, déplacer certains de ces fichiers dans un autre répertoire (donc 2 arguments) en utilisant 2 procédures stockées.

    Les liens que j'ai trouvé :
    http://msdn.microsoft.com/library/de...74646f4e1d.asp
    http://msdn.microsoft.com/library/de...96ce56dd5f.asp

    si quelqu'un pouvait m'aider ce serait sympa

    merci !

  2. #2
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    [edited] ca avance en fait pas facile tout ca ...

  3. #3
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    Bon ben en fait, y'a un soucis ... j'etais bien parti mais apparemment, il n'est pas possible de récupérer la liste des fichiers via OLE

    Voila le code que j'ai si ca en intéresse certains (je me suis inspiré de pas mal de sources ) :

    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
    ALTER PROCEDURE [dbo].[P_FOLDER_GETFILES] @NOM_DOSSIER NVARCHAR(256)
                                 --@FILE_HANDLE INTEGER OUTPUT,
                                 --@FOLDER_ID   INTEGER OUTPUT
     
    AS
     
    /**********************************************************************
    * MANIPULATION DE FICHIER PAR OLE SOUS MS SQL SERVER 2000 - CREATE F  *
    ***********************************************************************
    * FREDERIC BROUARD   -  2006-01-02  -   http://sqlpro.developpez.com  *
    **********************************************************************/
     
    SET NOCOUNT ON
     
    DECLARE @OLEHDL INTEGER
    DECLARE @FILE_HANDLE INTEGER
    DECLARE @FOLDER_ID   INTEGER
    DECLARE @FOLDERINFOS INTEGER
    DECLARE @NBFICHIERS  INTEGER
    DECLARE @FileItem int
    DECLARE @FileName varchar(100)
    --DECLARE @ItemSelect varchar (20)
    DECLARE @Dir table ( FileName varchar(100))
     
     
    -- création de l'objet OLE d'écriture en fichier
    EXECUTE @OLEHDL = sp_OACreate 'Scripting.FileSystemObject', 
                                  @FILE_HANDLE OUT
    IF @OLEHDL <> 0  
    BEGIN
       RAISERROR('Le dossier %s n''a pu être récupéré', 16, 1, @NOM_DOSSIER)
       RETURN
    END
     
    -- Récupération du dossier
    EXECUTE @OLEHDL = sp_OAMethod @FILE_HANDLE, 
                                  'GetFolder', 
                                  @FOLDER_ID OUTPUT, 
                                  @NOM_DOSSIER
    IF @OLEHDL <> 0 
    BEGIN
       RAISERROR('Le dossier %s n''a pu être ouvert en lecture', 16, 1, @NOM_DOSSIER)
       RETURN
    END
     
    -- Récupération des infos sur le dossier
    EXECUTE @OLEHDL = sp_OAMethod @FOLDER_ID, 'Files', @FOLDERINFOS OUTPUT
     
    IF @OLEHDL <> 0  
    BEGIN
       RAISERROR('Les infos du dossier %s n''ont pu être récupéré', 16, 1, @NOM_DOSSIER)
       RETURN
    END
     
    EXECUTE @OLEHDL = sp_OAGetProperty @FOLDERINFOS, 'Count', @NBFICHIERS OUTPUT
     
    IF @OLEHDL <> 0  
    BEGIN
       RAISERROR('Le nb de fichiers du dossier %s n''ont pu être récupéré', 16, 1, @NOM_DOSSIER)
       RETURN
    END
     
    PRINT 'Nb fichiers : ' + CONVERT(VARCHAR(100), @NBFICHIERS)
     
     
     
    -- cycle for all files
    WHILE @NBFICHIERS >0
    BEGIN
    	-- La propriété Item n'est pas reconnu :(
    	EXECUTE @OLEHDL = sp_OAGetProperty @FOLDERINFOS, 'Item', @FileItem OUT, @NBFICHIERS --@ItemSelect , @FileItem Out -- setting for file item
    	IF @OLEHDL <> 0  
    	BEGIN
    	   RAISERROR('Impossible de récupérer l''item', 16, 1)
    	   RETURN
    	END
     
    	EXECUTE @OLEHDL = sp_OAGetProperty @FileItem, 'Name' , @FileName OUT -- getting file name
    	IF @OLEHDL <> 0  
    	BEGIN
    	   RAISERROR('Impossible de récupérer le name', 16, 1)
    	   RETURN
    	END
     
    	IF @FileName <> ''
    	BEGIN
    		INSERT @Dir values (@FileName) -- saving filename into temporary table
    	END
     
    	SET @NBFICHIERS = @NBFICHIERS-1
    	SELECT @NBFICHIERS as po
    END
     
     
     
    cleanup:
    EXECUTE sp_OADestroy @FILE_HANDLE
     
    SET NOCOUNT OFF
    SELECT * FROM @Dir
    GO
    En recherchant, j'ai trouvé un fonction qui fonctionne, elle ... très "légèrement" plus simple ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE master..xp_dirtree N'c:\blabla', 1, 1


    Le résultat ressemble a ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a.txt			1	1
    azeazeazeaze.mno	1	1
    sousDossier		1	0
    Voila si ca intéresse des gens ...

  4. #4
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    Et vu que le déplacement de fichiers via OLE est bien bizarre aussi, je poste ici, ca peut en intéresser certains :

    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
    ALTER PROCEDURE [dbo].[P_FILE_MOVE] @NOM_FICHIER NVARCHAR(256), @NOM_FICHIER_NV NVARCHAR(256)
     
    AS
     
    /**********************************************************************
    * MANIPULATION DE FICHIER PAR OLE SOUS MS SQL SERVER 2000 - CREATE F  *
    ***********************************************************************
    * FREDERIC BROUARD   -  2006-01-02  -   http://sqlpro.developpez.com  *
    **********************************************************************/
     
    SET NOCOUNT ON
     
    DECLARE @OLEHDL      INTEGER
    DECLARE @FILE_HANDLE INTEGER
    --DECLARE @FILE_ID     INTEGER
     
     
    -- création de l'objet OLE d'écriture en fichier
    EXECUTE @OLEHDL = sp_OACreate 'Scripting.FileSystemObject', 
                                  @FILE_HANDLE OUT
    IF @OLEHDL <> 0  
    BEGIN
       RAISERROR('L''objet OLE n''a pas pu être créé', 16, 1, @NOM_FICHIER)
       RETURN
    END
     
     
    ---- Déplace le fichier
    DECLARE @x varchar(1000)
    SET @x = 'MoveFile("'+ rtrim(@NOM_FICHIER) + '","' + rtrim(@NOM_FICHIER_NV) + '")'
    --PRINT @x
    EXECUTE @OLEHDL = sp_OAMethod @FILE_HANDLE,@x
     
    ---- Déplace le fichier -> fonctionne pas :(
    --EXECUTE @OLEHDL = sp_OAMethod @FILE_HANDLE, 
    --                              'MoveFile', 
    --                              @NOM_FICHIER,
    --                              @NOM_FICHIER_NV
     
    IF @OLEHDL <> 0 
    BEGIN
    	print 'return : ' + cast(@OLEHDL as varchar)
       RAISERROR('Le fichier %s n''a pu être déplacé', 16, 1, @NOM_FICHIER)
       RETURN
    END
     
     
    EXECUTE sp_OADestroy @FILE_HANDLE

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

Discussions similaires

  1. [BdD] Pour fichiers multimedias
    Par naygter dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 22/08/2007, 20h14
  2. BDD ou fichier XML
    Par Seth77 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/05/2007, 08h29
  3. [BdD] Gros fichier XML (500mo) => BDD : Quelle technique ?
    Par Masterlud dans le forum XQUERY/SGBD
    Réponses: 10
    Dernier message: 02/05/2007, 13h31
  4. [ORACLE8i][EXPORT] Descente d'une BDD en fichier
    Par Titouf dans le forum Oracle
    Réponses: 1
    Dernier message: 15/12/2006, 17h25
  5. comment puis-je créer un BDD en fichier texte
    Par slyder dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/01/2005, 10h05

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