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

PostgreSQL Discussion :

premier pas... un peu bizarre


Sujet :

PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut premier pas... un peu bizarre
    Bonjour

    C'est la premiere fois que j'utilise PostgreSQL.
    Je connaisais deja mysq,access et oracle

    et je crois avoir un probleme qui m'est inedit.
    Je ne pense pas que ca soit dur a résoudre, certainement une astuce a connaitre.

    Voila je travail sous Eclipse3 en pilote JDBC ainsi que EMS PostgreSQL Manager pour gerer mes bases.

    Je me connecte sans problème mais je suis surpris de la forme que doivent prendre mes requetes pour qu'elles marchent.

    exemple:
    String req = "select \"INFOS\".\"INF_NOM\" from db.\"INFOS\"";

    ce qui me fait : select nomdetable.nomchamp from nomduschema.nomtable .
    tout cela sans oublier les guillemets qui ne sont pas la pour decorer.

    Pour les guillements je viens de comprendre que c'est pour permettre de differencier minuscule et majuscule... c'est a mon gout un peu barbare comme methode mais bon.


    Si quelqu'un peut mexpliquer comment me debarasser du fait de mettre le nom du schema avant le nom de la table et de trouver une parade à la methode tout en minuscule. merci d'avance

  2. #2
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Si les tables sont dans le schéma public alors tu n'as pas besoin de le préciser.
    Pour le nom de la table c'est pareil : il est optionnel si les nom des champs ne sont pas ambigüs c'est-à-dire uniques.

    Par contre pour les majuscules je ne crois pas qu'il y est de parades.

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    pour les schémas, quand aucun nom de schéma n'est utilisé en préfixe dans une requête, Postgres recherche l'objet dans le schéma "public", puis dans l'éventuel schéma portant le même nom que l'utilisateur responsable de la transaction. Il est possible de modifier ce comportement, en modifiant la variable seach_path :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET search_path TO ton_schema,public;
    Pour plus d'infos : http://www.postgresql.org/docs/8.1/s...L-SCHEMAS-PATH

    Tous les identifiants SANS guillemets sont convertis en minuscules par Postgres (contrairement à la norme SQL qui les traduit en majuscules), ce qui les rend insensibles à la casse. Si tu as créé tes tables en mettant des guillements autour de leurs noms, leur casse est prise en compte et tu es obligé d'employer les guillemets dans les requêtes qui y ont accès.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Bonjour

    Je vais completer un peu ce que dis GrandFather au niveau des schémas.

    Pour savoir sur quel schéma par defaut la recherche PostgreSQL utilise on lance la requête suivante :
    On récupère souvent ce type de réponse (Si le fichier de config PG est celui d'origine)
    Cette réponse nous indique que l'ordre de recherche des schémas par défaut est :
    • $user : Un schéma portant le même nom que l'utlisateur de la connection (ou celui du rôle LOGIN depuis la 8.1);
      public : Le schéma public crée par défaut.


    Donc si on s'est connecté avec l'utilisateur toto , la requête ci dessous
    est réécrite par le moteur en interne en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM toto.test;
    Si la table test n'est pas trouvé dans le schéma toto, alors elle est recherché dans le schéma public, donc réécrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM public.test;
    Pour éviter de spécifier le nom du schéma dans la requête il y'a possibilité de lancer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET search_path TO 'mon_schema';
    par contre si la table n'existe pas dans le schéma mon_schema, alors celle ci ne sera pas recherché dans le schéma public

    sinon il faut envoyer plutôt cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET search_path to 'mon_schema',public;
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à vous pour les indications.

    Voila qui va me simplifier la vie.

    Encore une chose :
    Comment peut on recuperer la liste des bases de données sans avoir à s'identifier, si cela existe.

    sinon je creerai un compte factise, ( genre scott pour oracle ).

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/02/2009, 09h23
  2. [AJAX] Premiers pas en AJAX
    Par chromatia dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/06/2008, 20h54
  3. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03
  4. Réponses: 2
    Dernier message: 14/04/2004, 19h37

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