Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 17h02   #1
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
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.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 14h56   #2
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
Salut
Comment savoir qu'il y a des tables sans nom?
@+
__________________
Le monde est trop bien programmé pour être l’œuvre du hasard…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 09h59   #3
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
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
Type de fichier : jpg table_sans_nom.jpg (7,8 Ko, 10 affichages)
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 17h33   #4
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
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 :
1
2
SELECT chr(34) || schemaname || '.' || tablename || chr(34) FROM pg_tables
WHERE schemaname NOT IN ('information_schema','pg_catalog')
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 15h03   #5
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
Salut
C'est vraiment étrange, mais je suis arrivé à faire...
Code :
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…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 17h32   #6
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
Et c'est quelle norme qui interdit un nom de table avec seulement des espaces?
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 20h25   #7
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
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…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2013, 11h15   #8
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
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.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2013, 13h27   #9
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
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):
Citation:
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…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2013, 14h24   #10
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
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 ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2013, 12h05   #11
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
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…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2013, 13h38   #12
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
Citation:
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.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 11h23   #13
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
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 !
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 11h24   #14
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
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.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h33.


 
 
 
 
Partenaires

Hébergement Web