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 :

drop table sans nom


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut drop table sans nom
    Bonour,

    J'ai un souci, j'ai des tables sans noms et je n'arrive pas à les supprimer avec pgadmin.

    Auriez vous une astuce ?

    merci.

  2. #2
    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
    Comment savoir qu'il y a des tables sans nom?
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Dans pgadmin, j'ai des lignes de tables mais qui ne possèdent pas de nom. Je ne sais pas quelle requête m'a généré de telles aberrations mais j'aimerais les supprimer.

    CF PJ.

    Merci et @+.
    Images attachées Images attachées  

  4. #4
    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
    En principe il n'y a pas de table sans nom mais il y peut y avoir des noms bizarres, par exemple constitués d'espaces uniquement.

    Qu'est ce que donne en sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select chr(34) || schemaname || '.' || tablename || chr(34) from pg_tables
    where schemaname not in ('information_schema','pg_catalog')

  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
    C'est vraiment étrange, mais je suis arrivé à faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE T1 RENAME TO " ";
    Mais ensuite je l'ais supprimer avec pgadmin (version 1.16.1). Même le ... passe!
    N'est-il pas mieux que PostgreSQL (censé respecter les normes) empêche de telles dérives.
    @+
    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 é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
    Et c'est quelle norme qui interdit un nom de table avec seulement des espaces?

  7. #7
    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 estofilo
    Ceci n'est pas pour vous contredire. Juste une argumentation.
    • Citation Envoyé par heretik25 Voir le message
      ...Je ne sais pas quelle requête m'a généré de telles aberrations mais j'aimerais les supprimer.
    • Citation Envoyé par estofilo Voir le message
      En principe il n'y a pas de table sans nom...
    • de sqlpro
    • du même auteur
    • et une discussion qui donne d'ailleurs les liens cités.

    J'ai essayé avec:
    • MySQL : refusé
    • SQL server: accepté
    • ACCESS: refusé
    • Firebird (avec flamerobin ou dbeaver): refusé

    Avec ORACLE je pense que c'est sera refusé.
    Je m'arrête là. Mais recevrais vos arguments avec intérêts.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  8. #8
    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
    Avec Oracle on peut faire create table " " (...), ça ne provoque pas d'erreur. C'est biensûr ridicule comme nom de table mais c'est le choix de l'utilisateur.

    Grosso-modo le standard sql dit qu'on peut utiliser des espaces ou n'importe quel autre caractère dans les identifiants tant qu'on met des guillemets autour. Avoir uniquement des espaces est juste un cas particulier de cette règle.

    Les SGBDs qui appliquent des règles différentes sont justement ceux qui ont choisi de ne pas suivre le standard. Ce n'est pas étonnant que ça concerne MySQL ou Access (je ne dirais rien pour firebird, jamais utilisé). Ceux-là ont comme par hasard leur propre syntaxe SQL avec des backquotes pour MySQL et des crochets pour Access pour entourer les identifiants.

  9. #9
    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 estofilo
    Dans l'ouvrage de Frédéric BROUARD, Rudi BRUCHEZ et Christian SOUTOU (livre censé enseigner le SQL standard),on lit (4ème édition page 60):
    SQL impose un certain nombre de règles concernant les noms des objets d'une base de données. Un nom d'objet (table, colonne, contrainte, vue, etc.) doit avoir les caractéristiques suivantes:
    • ne pas dépasser 128 caractères;
    • commencer par une lettre;
    • être composé de lettres, de chiffres et du caractère blanc souligné;
    • ne pas être un mot réservé de SQL, à moins d'être mis entre guillemets.
      ...
    Maintenant j'ai un bon argument pour ceux qui disent "ACCESS n'est pas sérieux en permettant l'espace dans les noms des objets..."
    Pour le cas de ORACLE je suis vraiment étonné car je crois avoir lu "ORACLE n'accepte pas d'espace dans les noms d'objets"
    J'étudie ORACLE par simple curiosité (en fait, je lis tout ce qui concerne les bases de données et qui me tombe sous la main)
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Merci pour toutes vos réponses.

    En fait je ne vois pas les noms car les tables ont un accent... En faisant un

    ça marche...

    P.S : Ce n'est pas moi qui ai donné le nom à ces tables.

    Peut-on configurer PGADMIN III pour voir le nom des tables ?

  11. #11
    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
    Je pense que c'est un problème d'encodage.
    Clique sur la base (dans l'arborescence) et regarde les propriétés à droite. Que te donne "codage"?
    Comment avez-vous reçu la base?
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  12. #12
    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
    SQL impose un certain nombre de règles concernant les noms des objets d'une base de données. Un nom d'objet (table, colonne, contrainte, vue, etc.) doit avoir les caractéristiques suivantes:
    • ne pas dépasser 128 caractères;
    • commencer par une lettre;
    • être composé de lettres, de chiffres et du caractère blanc souligné;
    • ne pas être un mot réservé de SQL, à moins d'être mis entre guillemets.
      ...
    Les deux règles au milieu ne concernent qu'un sous-cas de la grammaire SQL.
    La grammaire complète et toutes les règles associées (il y en a des pages) est lisible ici pour SQL-92:
    http://www.contrib.andrew.cmu.edu/~s...ql/sql1992.txt

    Voir l'élément lexical nommé <delimited identifier> ds le chapitre 5.2 <token> and <separator>. C'est ça qui fait que la grammaire SQL permet des espaces et plus généralement n'importe quel caractère dans un idenfiant entre guillemets.

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par alassanediakite Voir le message
    Salut
    Je pense que c'est un problème d'encodage.
    Clique sur la base (dans l'arborescence) et regarde les propriétés à droite. Que te donne "codage"?
    Comment avez-vous reçu la base?
    @+
    Codage : UTF8 !

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Les deux règles au milieu ne concernent qu'un sous-cas de la grammaire SQL.
    La grammaire complète et toutes les règles associées (il y en a des pages) est lisible ici pour SQL-92:
    http://www.contrib.andrew.cmu.edu/~s...ql/sql1992.txt

    Voir l'élément lexical nommé <delimited identifier> ds le chapitre 5.2 <token> and <separator>. C'est ça qui fait que la grammaire SQL permet des espaces et plus généralement n'importe quel caractère dans un idenfiant entre guillemets.
    Effectivement, merci pour le rappel seulement, il ne s'agit pas de mes tables mais celles d'un prestataire qui utilise ces tables dans l'application développée. bref, hallucinant.

Discussions similaires

  1. [DATA] concatener table sans connaître leur nom
    Par jobvince dans le forum SAS Base
    Réponses: 1
    Dernier message: 24/09/2010, 12h12
  2. [AC-2002] Modifier les noms des tables sans casser les requêtes
    Par gandalf20000000 dans le forum Modélisation
    Réponses: 5
    Dernier message: 07/04/2010, 21h30
  3. mysqldump: sans données ni énoncé drop tables
    Par TNorth dans le forum Outils
    Réponses: 3
    Dernier message: 09/02/2010, 10h49
  4. [AC-2007] Peut-on changer le nom d'un champ de table sans risque ?
    Par tibofo dans le forum Modélisation
    Réponses: 2
    Dernier message: 10/01/2010, 10h45
  5. exporter une table sans le nom de colonnes ?
    Par vuldos dans le forum Access
    Réponses: 13
    Dernier message: 11/10/2004, 19h56

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