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

Développement SQL Server Discussion :

Conversion caractères HTML en caractères accentués


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Conversion caractères HTML en caractères accentués
    Bonjour,

    Je souhaite extraire d'une base de données SQL quelques champs textes de tables au travers d'une requête SQL et ceci dans l'objectif d'automatiser un mailing récurrent, donc difficilement réalisable à la main. L'export fonctionne correctement techniquement. MAIS...
    Les données contenues dans ces champs sont issues d'une application Web qui "écrit" ces données en format HTML. Ce qui veut dire que tous les caractères spéciaux (par exemple "é" apparaissent en "é").
    Donc quand je fais mon export SQL vers Excel, je me retrouve avec tous ces caractères "format HTML" qui viennent polluer mon fichier Excel.
    Quelle solution existe-t-il pour nettoyer mon texte afin qu'il soit digeste ?
    Merci beaucoup de votre support !

    Philreut

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Tu peux faire un REPLACE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select replace(colonne, 'é', 'é') from table
    Et éventuellement en faire une fonction scalaire pour ne faire le boulot qu'une seule fois.
    Peut être qu'il y a une solution plus intelligente mais on est lundi matin donc je vais avoir du mal de trouver mieux
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Tu utilises quoi pour faire ton export ?
    Si tu utilises l'ETL de MS (SSIS) tu ajoutes une tâches qui va se charger du travail (Tâche de script).
    Si tu le fais directement via une requête, tu as 2 possibilités :
    Via une UDF (fonction utilisateur SQL) non recommandé, SQL n'est pas fait pour faire de la présentation en traitant les "bêtises" des utilisateurs (stockage des données au format HTML en base de données). Suivant ton volume de données, ça peut être long. Solution proposée par Darkelend.
    Directement dans Excel (traitement manuel à chaque export, macro)

    Ma recommandation est la création d'un package SSIS. Ce n'est pas la solution plus simple à mettre en place mais la plus pérenne.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Pour être plus précis, je n'envisageais pas de faire le SELECT dans la fonction. Ce qui serait évidement contre performant. Mais plutôt quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE FUNCTION SupprimerHTML
    (
    	@texte nvarchar(4000)
    )
    RETURNS nvarchar(4000)
    AS
    BEGIN
    	DECLARE @RETOUR nvarchar(4000)
    	SET @RETOUR = REPLACE(@texte, 'é', 'é')
    	RETURN @RETOUR
    END
    GO
    Et à l'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SupprimerHTML(colonne) as nouveauTexte FROM TABLE
    Si c'est un export régulier et si tu connais SSIS, je rejoins l'avis de SQLDev. Il est préférable de déporter ce traitement à l'ETL.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Salut !

    Merci de vos retours, c'est super !
    En fait, je n'ai pas d'ETL de prévu, mais pourquoi pas (vous conseillez quoi ?) !
    Je vais faire une fonction pour voir ce que ça donne et je reviens vous dire.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par philreut Voir le message
    En fait, je n'ai pas d'ETL de prévu, mais pourquoi pas (vous conseillez quoi ?) !
    Ssis, c'est fourni dans la licence sql server donc rien de plus a payer tu devrais trouver des tuto facilement.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bon, ben on va voir ce qu'on peut faire.
    Merci grandement de votre aide à tous.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    re Bonjour,

    J'ai créé cette fonction et ai fait le test et cela fonctionne parfaitement (je n'avais aucun doute )

    J'ai une question par rapport à l'ajout des autres caractères accentués fréquents : é, è, à, etc....
    Est-il possible dans un seul SET intégrer plusieurs REPLACE pour traiter le tout dans le RETURN @RETOUR ?

    J'ai essayé de rajouter un DECLARE et un SET supplémentaire, mais cela ne me corrige au final que le dernier SET / REPLACE et non pas les deux (ce qui parait logique...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	DECLARE @RETOUR nvarchar(4000)
    		SET @RETOUR = REPLACE(@nettoye, 'é', 'é')
    		SET @RETOUR = REPLACE(@nettoye, 'è', 'è')
    	RETURN @RETOUR
    Une idée sur cette concaténation de REPLACE pour un seul RETURN ?

    Merci !

    Philreut

  9. #9
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @RETOUR nvarchar(4000)
    		SET @nettoye = REPLACE(@nettoye, 'é', 'é')
    		SET @RETOUR = REPLACE(@nettoye, 'è', 'è')
    	RETURN @RETOUR
    Sinon, ca n'exécutera que le dernier SET
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci, c'est trop top... le résultat est tel que je l'espérais !

    Comment intégrer l'apostrophe (&rsquo dans le troisième paramètre de la fonction REPLACE, étant donné que c'est un caractère interprété dans le code SQL ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @nettoye = REPLACE(@nettoye, '&rsquo ;', ' ---> ICI <--- ')
    Merci beaucoup

  11. #11
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Il suffit de doubler les quotes donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @nettoye = REPLACE(@nettoye, '&rsquo ;', '''')
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

Discussions similaires

  1. remplacer caractères html par caractères "normaux"
    Par Luffy61 dans le forum Administration
    Réponses: 1
    Dernier message: 03/05/2012, 12h58
  2. Conversion de caractères HTML
    Par NaBaZTaG dans le forum Langage
    Réponses: 6
    Dernier message: 05/11/2009, 10h08
  3. Entités HTML en caractères accentués
    Par Ikonic dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 08/08/2008, 17h47
  4. conversion chaine de caractères --> HTML
    Par captainflex dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 17/06/2007, 21h37
  5. Conversion Caractères Spéciaux String -> Caractères HTML
    Par JujuDorange dans le forum Documents
    Réponses: 1
    Dernier message: 21/10/2006, 12h11

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