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

Requêtes PostgreSQL Discussion :

Champ TEXT sur plusieurs lignes


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut Champ TEXT sur plusieurs lignes
    Bonjour,

    j'ai parcouru la doc de PostgreSQL et la FAQ de developez.com sans trouver une réponse à ma question :

    Comment faire du INSERT INTO sur un champ de type TEXT ? Pour du VARCHAR ça donne : 'du texte', par contre j'aimerai pouvoir faire avec un TEXT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO matable VALUES ("Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...
    ...");
    Les double guillemets ne sont pas valdes pour tu texte, y a t-il un moyen de contourner cette limitation ?

    EDIT : La souttion est-elle ici ?

    http://www.postgresql.org/docs/9.1/s...x-lexical.html

    Point 4.1.1.2.
    Exprimer une différence d'opinion vaut mieux que :

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Avec des simples quotes :
    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
    create table test_text (c1 integer, c2 varchar(10), c3 text);
     
    insert into test_text values
    (1, 'ABC', 'Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...');
     
     
    select c1, c2, c3
      from test_text;
     
    | c1 |  c2 |                                                   c3 |
    |----|-----|------------------------------------------------------|
    |  1 | ABC | Un peu de texte ici.
     
     
    Sur plusieurs lignes etc... |

  3. #3
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Effectivement, le tout fonctionne correctement, les double quotes sont considérés comme des guillemets normaux, par contre, je n'ai pas réussi à y insérer des simple quotes dans le champ, Postgre n'a pas l'air d'apprécier l'échappement de caractère : \'.

    La source de la documentation est celle que j'ai posté au départ.

    Citation :
    Any other character following a backslash is taken literally. Thus, to include a backslash character, write two backslashes (\\). Also, a single quote can be included in an escape string by writing \', in addition to the normal way of ''.
    Exprimer une différence d'opinion vaut mieux que :

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Essayez en doublant la quote

  5. #5
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Essaye le double dollar $$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    insert into test_text values
    (1, 'ABC', $$Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...$$);
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  6. #6
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Essayez en doublant la quote
    J'ai essayé de 2 manières :

    Cette partie ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : \''');
    Celle ci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : '');
    Ton indication est donc correcte, pas très cohérent par rapport à ce que mentionne la documentation mais c'est peut-être une mauvaise interprétation de ma part. Merci !
    Exprimer une différence d'opinion vaut mieux que :

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    ça fait partie du langage SQL de base depuis sa création !!!
    Votre syntaxe est fausse car vous ne terminez pas la chaine...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : ''');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : 
    ''');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : ajourd''hui le fait d''apprendre SQL rebute quelqu''un');

    Apprenez le langage SQL. Mon site comme mon bouquin, peuvent vous y aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    ça fait partie du langage SQL de base depuis sa création !!!
    Votre syntaxe est fausse car vous ne terminez pas la chaine...

    Apprenez le langage SQL. Mon site comme mon bouquin, peuvent vous y aider !

    A +
    SQL syntex 4ème édition ?

    J'ai rien contre acheter un livre, après forcément venant de l'auteur, l'avis est forcément partial, le problème est ailleurs, comme avait dit fsmrel sur un MLD d'un de mes projets persos (cf. ici) :

    Mais, vérité en deçà du territoire d’un SGBD, erreur au-delà... Si l’on passe à SQL Server, on se fait jeter si on code CASCADE dans le cas de l’auto-référence ! Encore un diktat, aussi contestable, et aussi peu justifié que dans le cas de DB2 !
    C'est bien le coeur du problème :
    - Projet perso : MySQL (choix par défaut car inclut avec WAMP) mais a au moins le mérite de pouvoir utiliser MySQL Workbench pour générer automatiquement des tables
    - Au boulot : PostgreSQL : bien plus respectueux des standards, par contre les outils annexes pour créer un MLD me parait préhistorique (c'est un avis perso hein) pour un SGBD vieux de 20 ans, quand au debug, je n'en parle même pas en ligne de commande. A quand un Management Studio pour Postgre ? 2030 ?
    - Ma préférence et votre livre : orienté SQL Server.

    Difficile de choisir.

    Là encore je donne mon avis, le problème de trop nombreux projets open source est de fournir des outils semi finis assez peu adaptés à des clients finaux, exemples :
    - PG pour les arguments que j'ai cité précédemment,
    - Unix, Linux : à l'exception d'OS X, difficile de se passer de la ligne de commande, la distrib Debian avec XFCE que j'ai, n'a pas de d'option de recherche tel que sous Windows : ligne de commande quasi obligatoire. En termes d'UX, Windows 95 faisait mieux et c'est la vérité. Bon c'est discutable selon la distrib utilisée.
    - Le VB OpenOffice : mon dieu quelle horreur, Office 97 avait la décence de fournir de l'intellisense, en 96.
    Exprimer une différence d'opinion vaut mieux que :

  9. #9
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : ajourd''hui le fait d''apprendre SQL rebute quelqu''un');
    Oh pas le moins du monde. C'est les ORM qui sont une abérration, Je n'ai aucun problème avec du SQL, bien au contraire.
    Exprimer une différence d'opinion vaut mieux que :

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par Aizen64 Voir le message
    je n'ai pas réussi à y insérer des simple quotes dans le champ, Postgre n'a pas l'air d'apprécier l'échappement de caractère : \'.

    La source de la documentation est celle que j'ai posté au départ.

    Citation :
    Any other character following a backslash is taken literally. Thus, to include a backslash character, write two backslashes (\\). Also, a single quote can be included in an escape string by writing \', in addition to the normal way of ''.
    Il faut remettre cette citation dans son contexte. Le titre du paragraphe est String Constants with C-style Escapes et il commence par:

    PostgreSQL also accepts "escape" string constants, which are an extension to the SQL standard. An escape string constant is specified by writing the letter E (upper or lower case) just before the opening single quote, e.g., E'foo'
    Quand on n'utilise pas ce formalisme de chaîne préfixé par E, le backslash est un caractère normal et les règles mentionnées dans ce paragraphe ne s'appliquent pas.

  11. #11
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Exact. C'est un peu la problématique de n'avoir lu la doc que partiellement.
    Exprimer une différence d'opinion vaut mieux que :

Discussions similaires

  1. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07
  2. [jtable] Champs texte sur pls ligne dans cellule
    Par doudine dans le forum Composants
    Réponses: 8
    Dernier message: 17/11/2005, 12h36
  3. [JButton] Texte sur plusieurs lignes
    Par leminipouce dans le forum Composants
    Réponses: 5
    Dernier message: 19/10/2005, 10h17
  4. [CR10 ]un texte sur plusieurs lignes?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/09/2005, 07h26
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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