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 :

Script pour ecrire dans un blob


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut Script pour ecrire dans un blob
    Bonjour à tous...
    Quelqu'un peut-il m'envoyer un script en vb.net qui permet d’écrire un .pdf dans une colonne varbinary...

    Merci d'avance...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 87
    Points : 88
    Points
    88
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -> http://mfdatabase.free.fr/Pdf.rar
    -> http://pdfbox.apache.org/
    A la place du Console.Write, tu peux faire un INSERT INTO.

    Ce code date de 2008, il doit certainement y avoir de nouvelle bibliothèque pour manipuler les fichiers PDF !

    Bon courage

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je doute que sa demande corresponde à cette réponse.
    => Le PDF semble déjà généré, il se demande juste comment faire un INSERT/UPDATE avec.

    Avec le connecteur .NET, je pense qu'on a la même limitation qu'en ODBC ou OLEDB : la longueur de la requête est limitée en longueur, donc impossible de mettre un champ de plusieurs méga dedans.
    => Il faut passer par un filestream si je ne m'abuse. Jamais utilisé en revanche. J'imagine qu'en recherchant sur ce mot dans Google, on doit pouvoir trouver des choses.

    A noter que BLOB (enfin, TEXT ou NTEXT ou IMAGE sous SQL Server) est censé être abandonné, au profit de VARCHAR qui maintenant accepte jusqu'à 2 Go de données. Ceci dit, pour les gros volumes, il y a toujours la même limitation.
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci Glouferu mais j'avoue ne pas comprendre votre réponse...
    Ce que je cherche c'est comment écrire un toto.pdf dans une colonne blob d'une table SqlServer...

    En fait juste la façon de faire...

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Après une recherche rapide, tu peux :

    - Soit passer par une requête paramétrée et passer un array de byte contenant ton fichier.
    http://www.digitalcoding.com/Code-Sn...QL-Server.html

    - Soit, si SQL Server a accès au dossier de ton image, lui faire charger directement le fichier lui-même dans ta table en utilisant openrowset et la commande bulk.
    http://weblogs.sqlteam.com/peterl/ar...front-end.aspx

    Ces exemples seront à adapter (surtout si tu prends le premier)
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Membre émérite

    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
    Points : 2 856
    Points
    2 856
    Par défaut
    --> Pour importer un fichier .PDF dans une colonne (source )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE myTable(FileName nvarchar(60), 
      FileType nvarchar(60), Document varbinary(max));
    GO
     
    INSERT INTO myTable(FileName, FileType, Document) 
       SELECT 'Text1.pdf' AS FileName, 
          '.pdf' AS FileType, 
          * FROM OPENROWSET(BULK N'C:\Text1.pdf', SINGLE_BLOB) AS Document;

    --> Pour exporter (lire) le contenu de la colonne Document depuis SQL SERVER tu peux utiliser un CLR

    http://blog.developpez.com/zinzineti...ary/#more10311

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  7. #7
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci zinzineti pour votre réponse mais malheureusement cette requête (que j'ai essayé !) ne semble pas fonctionner sur SQL Server 2000 (serveur)...
    En fait je suis arrivé à stocker une image (dans une colonne image) => Ok
    Pour stocker un pdf, j'ai créé une colonne varbynary(50) mais l'insert que vous m'avez envoyé ne fonctionne pas (Je crois avoir lu qu'il ne fonctionnait que pour SqlServer 2008) ...
    1°) Me trompe-je et si oui, auriez-vous un autre exemple ?
    Autre question : Im y a deux façon d'alimenter une colonne varbinary : En filestream ou directement dans la database (suivant en fait, la grosseur de l'objet inséré )
    2°) Ma question est la suivante : l'ordre d'écriture de l'objet est-il différent suivant qu'il sera stocké en filestream ou dans la database ?

    merci pour vos réponses...

  8. #8
    Membre émérite

    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
    Points : 2 856
    Points
    2 856
    Par défaut
    C'est normal que ça ne marche pas sous SQL SERVER 2000.

    --> varbinary(max) n'existe pas sous SQL SERVER 2000.

    --> ... OPENROWSET(BULK ... n'existe pas sous SQL SERVER 2000

    --> CLR n'existe pas sous SQL SERVER 2000

    Au lieu de varbinary(max) tu peux utiliser le type image.

    pour les .pdf et autres je n'ai pas de solutions à te proposer ...

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  9. #9
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci pour ta réponse...

  10. #10
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par zinzineti Voir le message
    C'est normal que ça ne marche pas sous SQL SERVER 2000.

    --> varbinary(max) n'existe pas sous SQL SERVER 2000.

    --> ... OPENROWSET(BULK ... n'existe pas sous SQL SERVER 2000

    --> CLR n'existe pas sous SQL SERVER 2000

    Au lieu de varbinary(max) tu peux utiliser le type image.

    A+
    +1 à toi

    Citation Envoyé par zinzineti Voir le message
    pour les .pdf et autres je n'ai pas de solutions à te proposer ...
    A+
    Même chose, utilise le type image.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  11. #11
    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
    Citation Envoyé par WOLO Laurent
    Même chose, utilise le type image.
    Effectivement, ce type a été remplacé par varbinary(max) avec SQL Server 2005 ...

    @++

  12. #12
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Vous avez la même procédure pour ajouter le fichier :
    1-Vous charger un stream dans un tableau de bit;
    2-Vous passer ce tableau de bit à un paramètre de ta procédure stockée;

    Dans ta procédure stockée, tu fais un insert classique.

    Attention : Au cas où, le fichier est très volumineu, quelques mégaoctets, le décomposé en plusieurs morceaux à envoyer à sqlserver.

    Bonne chance.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

Discussions similaires

  1. [UIB] Probleme pour ecrire dans firebird apres avoir lu
    Par dehorter olivier dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 28/06/2007, 07h48
  2. Solution pour ecrire dans XML
    Par totoche dans le forum Flash
    Réponses: 1
    Dernier message: 26/10/2006, 17h36
  3. Probléme pour ecrire dans un fichier
    Par julien1981 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/06/2006, 11h18
  4. [VBA-E]Comment faire pour écrire dans une page excel existante ?
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 13h54
  5. Réponses: 2
    Dernier message: 08/04/2004, 11h11

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