Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/09/2011, 10h16   #1
Membre régulier
 
Inscription : novembre 2005
Messages : 462
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 462
Points : 75
Points : 75
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...
genio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h18   #2
Membre du Club
 
Inscription : décembre 2002
Messages : 82
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 82
Points : 66
Points : 66
Code :
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
Glouferu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h45   #3
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
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.
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h49   #4
Membre régulier
 
Inscription : novembre 2005
Messages : 462
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 462
Points : 75
Points : 75
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...
genio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 14h13   #5
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
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)
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 23h45   #6
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
--> Pour importer un fichier .PDF dans une colonne (source )

Code :
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
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h19   #7
Membre régulier
 
Inscription : novembre 2005
Messages : 462
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 462
Points : 75
Points : 75
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...
genio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 22h27   #8
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
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
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 10h20   #9
Membre régulier
 
Inscription : novembre 2005
Messages : 462
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 462
Points : 75
Points : 75
Merci pour ta réponse...
genio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h34   #10
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

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

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
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 !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 17h21   #11
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
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 ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 09h27   #12
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

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

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
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 !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h04.


 
 
 
 
Partenaires

Hébergement Web