Stocker un fichier de type quelconque dans une base de données sql server avec a

cs_abari Messages postés 89 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 20 février 2006 - 17 mai 2005 à 13:56
brainbugz Messages postés 1 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 27 mai 2005 - 27 mai 2005 à 19:58
bonjour tout le monde,

je veux savoir comment insérer un fichier de type quelconque dans une base de données sql server avec asp, aussi dequel type ca sera le champ dont je vais insèrer ce fichier dans sql server 2000
merci de votre aide

1 réponse

brainbugz Messages postés 1 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 27 mai 2005
27 mai 2005 à 19:58
Il est possible de stocker un fichier quelconque dans une base de donnée sql server grâce au type IMAGE, les types 'texte'(ascii) et 'ntext'(unicode) étant fait pour stocker des fichiers pain-text (xml, html, etc). Et vu que l'on peut faire des recherches sur des fichiers de ce type, et que je ne vois pas comment les stocker dans du 'text' ou 'ntext', j'en déduis que c'est bien dans un IMAGE qu'on peut les stocker et les indexer.

Il faut par contre savoir que le stockage d'un fichier, sauf de très petite taille, est en fait à déconseiller directement dans la base de donnée. Ce stockage d'élément assez lourd dans une base de donnée n'est pas 'LA bonne' méthode, vu l'importance du fichier et le travail du sgbd dans les cas de modifications de ce fichier. La ou les'(tu comprendra pq) meilleur(s) solution(s) sont :
- stocker le fichier sur le disque, client ou serveur, et d'insérer dans la table appropriée l'adresse du fichier(local ou URL).
- créer une référence déjà prévue dans sql server qui consiste à faire à peu de chose près la même chose qu'à la première proposition. Un champ de référence er un autre champ reprenant le type du fichier. Cette méthode est fort peu connue dans mon entourage et aussi par rapport à mes recherches sur le Net. Mais ca existe et ca m'intéresse beaucoup. Donc, si tu décide ou même que tu trouve comment mettre en oeuvre cette méthode, fais moi signe, merci. Le copain ASP.NET est biensûr aussi de la partie, mais C# m'intéresse aussi;). Remerci.

Petit info que j'ai trouvé :

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.
0
Rejoignez-nous