Stocker des fichiers sur SQL Serveur ?

Stocker des fichiers sur SQL Serveur ? - SQL/NoSQL - Programmation

Marsh Posté le 19-04-2005 à 15:52:45    

C'est la première fois que je travail sur SQL Serveur. J'ai par contre déjà travaillé sur Oracle et Mysql.
 
Mon problème est le suivant. J'aimerai stocker dans ma base de donné SQL Serveur (WJETAG_GIIT) des fichiers (Word, pdf) mais je ne sais pas du si c'est possible et comment faire (quel type utiliser, quelle requête exécuter pour insérer le fichier, etc).
 
Je vous remercie d'avance pour votre réponse


---------------
Asta la vista miam miam !!!
Reply

Marsh Posté le 19-04-2005 à 15:52:45   

Reply

Marsh Posté le 20-04-2005 à 11:54:49    

Salut,
 
C'est tout à fait possible, en fait il te suffit d'utiliser une zone de type 'image'.
 
Par contre, je ne sais pas comment faire pour insérer le fichier directement depuis SQL. Moi j'utilisais VB pour l'interface et avec VB je passais par un 'BLOB' qui était un paramètre d'entrée d'un SP.
 
Voilà j'espère que ça t'as aidé un peu

Reply

Marsh Posté le 21-04-2005 à 11:40:33    

En plus, quand c'est dans la BDD, t'as les fonctions de recherche sur texte intégral (index de texte) qui permettent de retrouver ses petits dedans, et c'est compatible avec tous les formats Office et PDF, ça tombe bien ;)

Reply

Marsh Posté le 21-04-2005 à 11:41:33    

Sinon, en plus du type "IMAGE", il y a aussi les types "text" (acsii) et "ntext" (unicode) qui ont la même capacité, que tu préfèreras utiliser dans le cas de stockage de fichiers pain-text (xml, html, etc.)

Reply

Marsh Posté le 21-04-2005 à 13:31:15    

Arjuna a écrit :

Sinon, en plus du type "IMAGE", il y a aussi les types "text" (acsii) et "ntext" (unicode) qui ont la même capacité, que tu préfèreras utiliser dans le cas de stockage de fichiers pain-text (xml, html, etc.)


 
Tiens, je savais pas tout ça :whistle:
 
Mais d'après ce que je comprends de tes messages Arjuna, c'est que tu peux stocker un document Word dans la DB (dans une zone de type "image" et faire une recherche sur texte intégral dans cette zone?
 
Je savais que cela pouvait se faire avec les type "text" et "ntext" mais pour "image" ça me paraît... douteux :??:
 
M'enfin j'ai pas fait de recherche très poussée là-dessus

Reply

Marsh Posté le 21-04-2005 à 19:28:38    

Faut que je vérifie. Mais étant donné qu'on peut faire des recherche sur des fichiers de ce type, et que je ne vois pas trop comment les stocker dans un text/ntext, j'en déduis que c'est bien dans un IMAGE qu'on peut les stocker et les indexer.

Reply

Marsh Posté le 22-04-2005 à 08:49:42    

Ok, ben tiens-moi au courant ça m'intéresse :)
 
Parce que comme on peut stocker un peu n'importe quoi dans une zone de type 'image', je me demande bien comment l'indexeur va réagir quand il va tomber sur une image (justement) jpg dans la zone... Il va indexer quoi?

Reply

Marsh Posté le 22-04-2005 à 10:09:57    

Ben logiquement, il va faire comme Index Server quand il arrive sur un fichier d'un type qu'il ne connait pas :
S'il trouve de l'ASCI, il indexe bêtement. Mais si c'est du binaire, dans un format inconnu, il ignore.
 
Ca me semble d'autant plus logique, puisque ce moteur d'indexation de SQL Server n'est en réalité qu'un plugin du service Index Server.

Reply

Marsh Posté le 22-04-2005 à 10:18:38    

Gotcha :)
 

Citation :


 
 Architecture de SQL Server  
 
 
Index et catalogues de texte intégral
Un index de texte intégral Microsoft® SQL Server™ 2000 permet de prendre en charge efficacement une recherche de mot sophistiquée dans des chaînes de données de type caractère. L'index de texte intégral stocke les informations se rapportant aux mots significatifs et leur emplacement à l'intérieur d'une colonne donnée. Cette information est utilisée pour répondre aux requêtes de texte intégral qui recherchent les lignes contenant ces mots ou ces combinaisons de mots.
 
Les index de texte intégral sont contenus dans les catalogues de texte intégral. Chaque base de données peut renfermer un ou plusieurs catalogues de texte intégral. Un catalogue ne peut pas appartenir à plusieurs bases de données et chaque catalogue peut contenir des index de texte intégral pour une ou plusieurs tables. Une table ne peut disposer que d'un seul index de texte intégral, aussi, chaque table qui possède un index de texte intégral ne peut appartenir qu'à un seul catalogue de texte intégral.
 
Les catalogues et les index de texte intégral ne sont pas stockés dans la base de données à laquelle ils appartiennent. Les catalogues et les index sont gérés séparément par le service Microsoft Search.
 
Un index de texte intégral doit être défini sur une base de données, il ne peut pas être défini sur un vue, une table système ou une table temporaire. La définition d'un index de texte intégral se compose de :  
 
Une colonne qui identifie de manière unique chaque ligne de la table (clé principale ou candidate) et qui ne doit pas comporter de valeur NULL.
 
 
Une ou plusieurs colonnes de chaînes de caractères couvertes par l'index.  
L'index de texte intégral est rempli à l'aide des valeurs de clé. L'entrée pour chaque clé dispose d'informations au sujet des mots significatifs (les mots vides sont éliminés) qui sont associés à la clé, à la colonne où ils se trouvent et à leur emplacement dans la colonne.
 
Les chaînes de texte mises en forme, telles que les fichiers de documents Microsoft® Word™ ou les fichiers HTML, ne peuvent pas être stockées sous forme de chaînes de caractères ou de colonnes Unicode, car une grande partie des octets de ces fichiers contiennent des structures de données qui ne forment pas des caractères valides. Les applications de bases de données peuvent cependant nécessiter un accès à ces données et leur appliquer des recherches de texte intégral. De nombreux sites stockent ces types de données dans des colonnes image, car celles-ci n'imposent pas que chaque octet forme un caractère valide. SQL Server 2000 offre la possibilité d'effectuer des recherches de texte intégral sur ces types de données stockées dans des colonnes image. SQL Server 2000 fournit des filtres lui permettant d'extraire des données texte de fichiers Microsoft Office™ (fichiers .doc, .xls et .ppt files), de fichiers texte (fichiers .txt) et de fichiers HTML (fichiers .htm). Lorsque vous concevez la table, outre la colonne image qui contient les données, vous incluez une colonne de liaison pour contenir l'extension du fichier pour la mise en forme des données stockées dans la colonne image. Vous pouvez créer un index de texte intégral qui référence à la fois la colonne image et la colonne de liaison pour activer les recherches de texte intégral sur les informations textuelles stockées dans la colonne image. Le moteur de recherche de texte intégral SQL Server 2000 utilise les informations d'extension du fichier provenant de la colonne de liaison afin de sélectionner le filtre approprié pour l'extraction de données texte de la colonne.
 
L'indexation de texte intégral met en œuvre deux prédicats Transact-SQL pour tester les lignes par rapport à une condition de recherche de texte intégral :  
 
CONTAINS
 
 
FREETEXT  
Transact-SQL possède également deux fonctions qui renvoient un jeu de lignes qui correspondent à une condition de recherche de texte intégral :  
 
CONTAINSTABLE
 
 
FREETEXTTABLE  
En interne, SQL Server envoie la condition de recherche au service Microsoft Search. Le service Microsoft Search trouve toutes les clés qui correspondent à la condition de recherche de texte intégral et les renvoie à SQL Server. SQL Server utilise alors la liste des clés pour déterminer lesquelles des lignes de la table doivent être traitées.
 
 
Voir aussi
 
Index de texte intégral
 
Architecture des requêtes de texte intégral
 
Interrogation des données SQL Server en mode texte intégral
 
Service de recherche Microsoft
 
©1988-2000 Microsoft Corporation. Tous droits réservés.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed