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 :

Extraire contenu texte dans champs objet fichier


Sujet :

Développement SQL Server

  1. #1
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut Extraire contenu texte dans champs objet fichier
    Bonjour,
    J'utilse une requete de conversion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Id_1 ,CONVERT(varchar(8000), convert(binary(8000), memo)) as Texte 
    FROM SYSADM.MaTable
    qui extrait le contenu du fichier texte present dans le champ mémo. Ce champ est de type Objet . A l'extraction je perds tous les caractères accentués qui étaient present dans ce texte. Y-a-t-il un moyen de conserver les caracters spéciaux ? soit en modifiant la requete ou en utilisant un outil peut-être ?
    Merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    En base de données il n'y a ni tableaux ou fichiers, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes

    Ce champ est de type Objet
    Une colonne ne peut pas avoir le type objet, il n'existe pas en SQL.

    Vous "perdez" les caractères accentués parce que vous transtypez vers le type BINARY qui n'est clairement pas conçu pour gérer du texte.

    Que souhaitez-vous faire exactement ?

    @++

  3. #3
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut
    D'accord, c'est un type image, l'equivalent d'un champ BLOB.
    C'est l'extraction du contenu (Appli (OLE) enregistrant du texte).

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Utilisez donc une colonne de type text, et si vous êtes sous SQL Server 2005 ou ultérieur, utilisez une colonne de type VARCHAR(MAX) ou NVARCHAR(MAX), selon vos besoins

    @++

  5. #5
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut
    Merci mais je crois que vous n'avez pas compris que j'attaque une base pour en extraire des infos pas pour les créer.

    Cordialement

  6. #6
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    Pour préciser ce que dit elsuket c'est que si vous chercher à stoker des données de type caractère, il faut choisir un type adapté et le type binary n'est pas adapté pour stocker des données de type caractère.
    Autre éléement comment vous les stockées comme données binaire, comment souhaitez vous que SQL Server retrouve la bonne page de code?
    Regardez tut de même du coté de la doc officielle de CONVERT: http://msdn.microsoft.com/fr-fr/libr...8(SQL.90).aspx

  7. #7
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut
    Un point de precision encore une fois: je ne stocke pas ni provoque l'enregistrement de ces données, je cherche à les extraire. Je n'ai pas le choix. J'ai vu cette page Microsoft.
    Il y a, semble-t-il des logiciels qui arrivent à les restituer, j'essaie seulement d'avoir la methode pour y arriver. C'est pas grave, merci pour votre aide.

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Merci mais je crois que vous n'avez pas compris que j'attaque une base pour en extraire des infos pas pour les créer.
    Et alors ?

    Je vous ai donné une méthode pour les extraire, en vous précisant que le type de données BINARY, qui porte bien son nom, ne peut pas stocker des données de type texte conformément à ce que vous recherchez.

    Vous devez pour cela changer le type de votre colonne en CLOB, c'est à dire de type TEXT.
    Enfin si vous êtes sous SQL Server 2005 au moins, passez votre colonne au type VARCHAR(MAX), vous pourrez dépasser en plus la limite des 8000 caractères.
    Cela vous évitera enfin d'effectuer deux CONVERT qui pourrissent les performances de vos requêtes.

    Si vous n'avez effectivement pas la possibilité de changer le type de données de la colonne en question (ALTER TABLE maTable ALTER COLUMN maColonne TEXT), tournez-vous vers un logiciel tiers (donnez-nous en le nom !).
    Je doute cependant que ceux-ci parviennent à vous restituer les accents ...

    @++

Discussions similaires

  1. [XL-2010] Copier le contenu d'un fichier texte dans un autre fichier texte
    Par Piixx_e dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 15/11/2013, 11h31
  2. Réponses: 1
    Dernier message: 03/04/2009, 18h23
  3. effacer le contenu texte dans un calque
    Par kawther dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/04/2007, 11h38
  4. Alignement vertical de text dans 2 objets
    Par E.Bzz dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/03/2007, 16h36
  5. Insertion documents word dans champ objet OLE sous VBA
    Par frankouche dans le forum Access
    Réponses: 4
    Dernier message: 20/12/2006, 21h35

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