web-dev-qa-db-fra.com

Comment afficher les commentaires d'une colonne avec une opération desc

Je veux que l'opération desc table; affiche les commentaires des colonnes. J'ai vu que certaines personnes y sont parvenues, mais je n'ai pas pu savoir comment. Cela dépend peut-être de la version de SQL Developer, la mienne est 2.1.0.63. La base de données est Oracle 11g.

C'est ce que j'obtiens en faisant desc table;:

Desc table;
    Name                Nullable Type
    ------------------- -------- -----
    ID                  NOT NULL NUMBER(38)
    ITEM_ID                      NUMBER(38)

Et je voudrais obtenir quelque chose comme ça:

Desc table;
    Name                Nullable Type        Comment
    ------------------- -------- ----------  ---------------------------------
    ID                  NOT NULL NUMBER(38)  Table's id
    ITEM_ID                      NUMBER(38)  Reference to an item
21
Guito

la commande desc est interprétée différemment pour différents outils. Ce qu'il fait, c'est faire une sélection de certaines vues Oracle standard.

Voici une requête sur les vues qui fourniront les données de colonne souhaitées, mais je vous encourage à faire un select * pour voir tout ce qui est disponible.

Vous disposez de 3 types de vues, les vues dba _, tous _ et user_ *. J'utilise user_ * car il est disponible pour chaque schéma/utilisateur, mais il répertorie uniquement les objets appartenant à ce schéma/utilisateur. Les vues dba_ sont généralement réservées aux dba et les vues all_ peuvent ou non être disponibles pour vous en fonction de la confiance que vos dba vous accordent. ^ _ ^

select tc.column_name
,      tc.nullable
,      tc.data_type || case when tc.data_type = 'NUMBER' and tc.data_precision is not null then '(' || tc.data_precision || ',' || tc.data_scale || ')'
                            when tc.data_type like '%CHAR%' then '(' || tc.data_length || ')'
                            else null
                       end type
,      cc.comments
from   user_col_comments cc
join   user_tab_columns  tc on  cc.column_name = tc.column_name
                            and cc.table_name  = tc.table_name
where  cc.table_name = upper(:tablename)
25
winkbrace

Voici la définition d'Oracle SQL Developer (comme indiqué dans la vue des colonnes du tableau):

SELECT "COLUMN_NAME", "DATA_TYPE", "NULLABLE", "DATA_DEFAULT", "COLUMN_ID", "COMMENTS" FROM(
select c.column_name,  case when data_type = 'CHAR'     then      data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            when data_type = 'VARCHAR'  then      data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            when data_type = 'VARCHAR2' then      data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            when data_type = 'NCHAR'    then      data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            when data_type = 'NUMBER' then      
                                    case when c.data_precision is null and c.data_scale is null then          'NUMBER' 
                                    when c.data_precision is null and c.data_scale is not null then          'NUMBER(38,'||c.data_scale||')' 
                                    else           data_type||'('||c.data_precision||','||c.data_SCALE||')'      end    
                            when data_type = 'NVARCHAR' then      data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            when data_type = 'NVARCHAR2' then     data_type||'('||c.char_length||decode(char_used,'B',' BYTE','C',' CHAR',null)||')'    
                            else      data_type    end data_type,
  decode(nullable,'Y','Yes','No') nullable,  
c.DATA_DEFAULT,column_id,   com.comments         
  from sys.Dba_tab_Columns c, 
       sys.Dba_col_comments com
  where c.owner      = :OBJECT_OWNER  
  and  c.table_name =  :OBJECT_NAME   
  and c.table_name = com.table_name
  and c.owner = com.owner
  and c.column_name = com.column_name                 
  order by column_id
)
5
Pavel Gatnar

Dans Oracle SQLcl , une nouvelle CLI moderne pour Oracle Database, nous avons DESC. Mais nous avons également construit une nouvelle commande appelée INFO [RMATION].

Il affiche par défaut les commentaires de la colonne.

I am HR on orcl > info locations
TABLE: LOCATIONS
         LAST ANALYZED:2017-03-02 17:00:31.0
         ROWS         :23
         SAMPLE SIZE  :23
         INMEMORY     :DISABLED
         COMMENTS     :Locations table that contains specific address of a specific office,
                       warehouse, and/or production site of a company. Does not store addresses /
                       locations of customers. Contains 23 rows; references with the
                       departments and countries tables.

Columns
NAME             DATA TYPE           NULL  DEFAULT    COMMENTS
*LOCATION_ID     NUMBER(4,0)         No               Primary key of locations table
 STREET_ADDRESS  VARCHAR2(40 BYTE)   Yes              Street address of an office, warehouse, or
                                                      production site of a company.Contains building
                                                      number and street name
 POSTAL_CODE     VARCHAR2(12 BYTE)   Yes              Postal code of the location of an office,
                                                      warehouse, or production siteof a company.
 CITY            VARCHAR2(30 BYTE)   No               A not null column that shows city where an office,
                                                      warehouse, orproduction site of a company is
                                                      located.
 STATE_PROVINCE  VARCHAR2(25 BYTE)   Yes              State or Province where an office, warehouse, or
                                                      production site of acompany is located.
 COUNTRY_ID      CHAR(2 BYTE)        Yes              Country where an office, warehouse, or production
                                                      site of a company islocated. Foreign key to
                                                      country_id column of the countries table.

Indexes
INDEX_NAME                 UNIQUENESS   STATUS   FUNCIDX_STATUS   COLUMNS
HR.LOC_ID_PK               UNIQUE       VALID                     LOCATION_ID
HR.LOC_CITY_IX             NONUNIQUE    VALID                     CITY
HR.LOC_COUNTRY_IX          NONUNIQUE    VALID                     COUNTRY_ID
HR.LOC_STATE_PROVINCE_IX   NONUNIQUE    VALID                     STATE_PROVINCE


References
TABLE_NAME    CONSTRAINT_NAME   DELETE_RULE   STATUS    DEFERRABLE       VALIDATED   GENERATED
DEPARTMENTS   DEPT_LOC_FK       NO ACTION     ENABLED   NOT DEFERRABLE   VALIDATED   USER NAME

I am HR on orcl >

Si vous exécutez INFO +, il remplace les commentaires de colonne par des statistiques de colonne.

I am HR on orcl > info+ locations
TABLE: LOCATIONS
         LAST ANALYZED:2017-03-02 17:00:31.0
         ROWS         :23
         SAMPLE SIZE  :23
         INMEMORY     :DISABLED
         COMMENTS     :Locations table that contains specific address of a specific office,
                       warehouse, and/or production site of a company. Does not store addresses /
                       locations of customers. Contains 23 rows; references with the
                       departments and countries tables.

Columns
NAME             DATA TYPE           NULL  DEFAULT    LOW_VALUE               HIGH_VALUE              NUM_DISTINCT   HISTOGRAM
*LOCATION_ID     NUMBER(4,0)         No                   1000                    3200                    23             NONE
 STREET_ADDRESS  VARCHAR2(40 BYTE)   Yes                  12-98 Victoria Street   Schwanthalerstr. 7031   23             NONE
 POSTAL_CODE     VARCHAR2(12 BYTE)   Yes                  00989                   YSW 9T2                 22             NONE
 CITY            VARCHAR2(30 BYTE)   No                   Beijing                 Whitehorse              23             NONE
 STATE_PROVINCE  VARCHAR2(25 BYTE)   Yes                  BE                      Yukon                   17             NONE
 COUNTRY_ID      CHAR(2 BYTE)        Yes                                                                  14             FREQUENCY

Indexes
INDEX_NAME                 UNIQUENESS   STATUS   FUNCIDX_STATUS   COLUMNS
HR.LOC_ID_PK               UNIQUE       VALID                     LOCATION_ID
HR.LOC_CITY_IX             NONUNIQUE    VALID                     CITY
HR.LOC_COUNTRY_IX          NONUNIQUE    VALID                     COUNTRY_ID
HR.LOC_STATE_PROVINCE_IX   NONUNIQUE    VALID                     STATE_PROVINCE


References
TABLE_NAME    CONSTRAINT_NAME   DELETE_RULE   STATUS    DEFERRABLE       VALIDATED   GENERATED
DEPARTMENTS   DEPT_LOC_FK       NO ACTION     ENABLED   NOT DEFERRABLE   VALIDATED   USER NAME

I am HR on orcl >
1
thatjeffsmith