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 :

Récupération texte depuis la base de données


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Récupération texte depuis la base de données
    Bonjour,

    Je suis entrain d'utiliser une base de donnés Ms Sql-Server 2008 et je possède plusieurs paragraphes dans un texte qui possèdent des style .... je veux savoir comment je peux récupérer le contenu d'une paragraphe avec son style au niveau de base ?Est-ce-que c'est possible ?

    car je possède plusieurs paragraphes que je dois les importer pour un traitement ultérieur et donc je veux les récupérer avec leurs styles.

    Merci

  2. #2
    Membre expérimenté
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Par défaut
    Les textes sont stockés dans une seule colonne en base j'imagine? Ils sont stocké comment, en texte pur ou bien en html ou autre?

    Il faudrait un exemple afin de pouvoir t'aider stp.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Euh j'ai pas encore stocké mais au fait imaginons que j'ai deux paragraphes avec des styles et tout et j'aimerais les stocker dans un seul champs d'une colonne.il sont des textes pur normalement

  4. #4
    Membre expérimenté
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Par défaut
    Donc en fait tu veux savoir comment couper le texte en plusieurs parties pour l'insérer en base.

    Il faut donc que le texte ait un séparateur unique entre les paragraphe. Il faut choisir / créer ce séparateur du coup. Par exemple tu peux dire qu'une paragraphe et définit par deux retours. Avec ces info tu vas pouvoir utiliser des commandes CHARINDEX pour couper. Par contre si tu as plusieurs paragraphes il va falloir les inserer dans une table de travail au début puis couper et inserer chaque paragraphe de façon procédurale. Peut-être avec un curseur

    Ca crée une jolie petite usine à gaz.

    A mon avis il vaut mieux faire couper le texte avant ou après l'insertion en base.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Au fait je possède un texte de 32 pages donc je vais découper tout le texte en paragraphes et lors de l’invocation de ce texte est-ce-que je garde la mise en forme ou non ? sinon il y a un tuto concernant le découpage et l'insertion d'un tel texte car c'est ma première fois et je suis très basique dans les notions de base de données
    Merci

  6. #6
    Membre expérimenté
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Par défaut
    Ok, bien que je pense que ce n'est pas très propre de traiter ce cas en SQL voici le code qui va pouvoir t'aider :

    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
    SELECT
    	'<p>Microsoft SQL Server propose plusieurs fonctionnements&nbsp;:</p>
    <h3><span id="Langages" class="mw-headline">Langages</span><span class="mw-editsection">[<a title="Modifier la section : Langages" href="/w/index.php?title=Microsoft_SQL_Server&amp;action=edit&amp;section=2">modifier</a>]</span></h3>
    <p>Pour les requêtes, SQL Server utilise <a title="Transact-SQL" href="/wiki/Transact-SQL">T-SQL</a> (Transact-SQL), il s''agit d''une implémentation de <a title="Structured Query Language" href="/wiki/Structured_Query_Language">SQL</a> qui prend en charge les procédures stockées et les déclencheurs (<i>trigger</i>). Le <a title="Transact-SQL" href="/wiki/Transact-SQL">T-SQL</a> est incompatible avec le <a title="PL/SQL" href="/wiki/PL/SQL">PL/SQL</a> d''<a title="Oracle Database" href="/wiki/Oracle_Database">Oracle</a>.</p>
    <p>Pour les transferts de données, SQL Server utilise le format TDS (Tabular Data Stream) qui a été implémenté dans d''autres bases de données (en particulier dans son homologue <a title="Sybase" href="/wiki/Sybase">Sybase</a>) et dont les spécifications sont publiques. Une implémentation <a class="mw-redirect" title="Open Source" href="/wiki/Open_Source">Open Source</a> d''un client TDS est disponible et constitue la base du client SQL Server du projet <a title="Mono (logiciel)" href="/wiki/Mono_(logiciel)">Mono</a>&nbsp;: <i>FreeTDS</i>.</p>
    <h3><span id="Relations" class="mw-headline">Relations</span><span class="mw-editsection">[<a title="Modifier la section : Relations" href="/w/index.php?title=Microsoft_SQL_Server&amp;action=edit&amp;section=3">modifier</a>]</span></h3>
    <p>SQL Server est un <a title="Système de gestion de base de données" href="/wiki/Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es">SGBD</a> relationnel. Il est possible de définir des relations entre les tables de façon à garantir fortement l''intégrité des données qui y sont stockées. Ces relations peuvent être utilisées pour modifier ou supprimer en chaîne des <a title="Enregistrement (informatique)" href="/wiki/Enregistrement_(informatique)">enregistrements</a> liés.</p>
    <h3><span id="Transactions" class="mw-headline">Transactions</span><span class="mw-editsection">[<a title="Modifier la section : Transactions" href="/w/index.php?title=Microsoft_SQL_Server&amp;action=edit&amp;section=4">modifier</a>]</span></h3>
    <p>SQL Server est un <a title="Système de gestion de base de données" href="/wiki/Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es">SGBD</a> transactionnel. Il est capable de préparer des modifications sur les données d''une base et de les valider ou de les annuler d''un bloc. Cela garantit l''intégrité des informations stockées dans la base.</p>
    <p>Lors d''une transaction, les blocs de données contenant les lignes de données modifiées par cette transaction sont verrouillés. Les autres utilisateurs, en fonction du niveau d''isolation choisi, doivent attendre ou non la fin de la transaction pour pouvoir les modifier à nouveau.</p>
    <p>Les verrouillages s''effectuent au niveau des lignes, pages, extensions, tables ou base de données. SQL Server ne verrouille que les ressources dont il a besoin (par défaut les enregistrements) et en fonction des besoins peut verrouiller à un niveau plus élevé (pages ou objet). Cela évite aux utilisateurs d''attendre la fin d''une transaction pour mettre à jour des lignes de données qui n''ont pas été touchées par une modification et permet de diminuer la quantité de ressources consommées</p>
    <p>Les transactions sont enregistrées dans le journal de transaction et les modifications des données sont intégrées à la base de données lors de points de contrôle (check point). Il est possible de forcer un point de contrôle grâce à l''instruction <b>CHECKPOINT</b></p>
    <p>Le journal des transactions peut être conservé de trois manières différentes&nbsp;:</p>' AS Texte INTO #TexteATraiter
     
    DECLARE @Paragraphes TABLE (Paragraphe VARCHAR(MAX))
     
    DECLARE @Paragraphe VARCHAR(8000)
     
    DECLARE @getParagraphe CURSOR
     
    SET @getParagraphe = CURSOR FOR SELECT
    	SUBSTRING(Texte, 1, (CHARINDEX('</p>', Texte) + 3)) AS Paragraphe
    FROM #TexteATraiter
     
    OPEN @getParagraphe
    	FETCH NEXT
    	FROM @getParagraphe INTO @Paragraphe
    		WHILE ( SELECT
    			LEN(Texte)
    			FROM #TexteATraiter) >0
    				BEGIN
    					INSERT INTO @Paragraphes
    							SELECT
    									SUBSTRING(Texte, 1, (CHARINDEX('</p>', Texte) + 3)) AS Paragraphe
    							FROM #TexteATraiter
     
    					UPDATE #TexteATraiter
    							SET Texte = SUBSTRING(Texte, (CHARINDEX('</p>', Texte) + 4), 2147483647)
     
    	FETCH NEXT
    	FROM @getParagraphe INTO @Paragraphe
    END
    	CLOSE @getParagraphe
    	DEALLOCATE @getParagraphe
     
    SELECT
    	*
    FROM @Paragraphes
    En gros ça fait le suivant :
    1 Insertion du texte dans une table temporaire
    2 Création d'un curseur qui sélectionne la première paragraphe en se basent sur la fermeture de balise </p> (paragraphe en html)
    3 Mise à jour du texte dans la table temporaire pour effacer la ligne traiter
    4 Boucler jusqu'à la table temporaire est vide
    5 SELECT des paragraphes coupées.

    Pour faire cela j'ai utilisé du HTML mais tu peux envisage de couper le texte sur un autre type de séparateur de ligne. Est-ce plus claire maintenant?

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

Discussions similaires

  1. ODBC, récupération des données depuis la base de données "unify"
    Par slimlus dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 05/04/2011, 11h00
  2. Afficher image depuis texte dans la base de donnée
    Par bruce207 dans le forum Langage
    Réponses: 12
    Dernier message: 01/04/2010, 10h42
  3. JTextField, envoie du text a une base de données.
    Par niklette dans le forum Composants
    Réponses: 2
    Dernier message: 05/06/2006, 20h23
  4. Réponses: 2
    Dernier message: 14/03/2006, 14h49
  5. Liens depuis une base de donnée statique
    Par LucG dans le forum Access
    Réponses: 4
    Dernier message: 26/10/2005, 11h12

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