Comment afficher la structure de la table dans la base de données DB2
J'ai eu la réponse du sysibm.syscolumns
Select distinct(name), ColType, Length from Sysibm.syscolumns where tbname = 'employee';
Généralement, il est plus facile d’utiliser DESCRIBE.
DESCRIBE TABLE MYSCHEMA.TABLE
ou
DESCRIBE INDEXES FOR MYSCHEMA.TABLE SHOW DETAIL
etc.
Voir la documentation: commande DESCRIBE
La commande suivante fonctionne également:
describe SELECT * FROM table_name;
L'instruction select peut être remplacée par une autre instruction select, ce qui est très utile pour les insertions complexes avec select, par exemple.
Dans DB2, entrez la commande db2 Invite.
db2 => describe table MyTableName
POUR DESCRIPTION DE LA TABLE DANS LA VERSION IBM DB2 10.7, j’ai essayé
SELECT NAME,COLTYPE,NULLS,LONGLENGTH FROM SYSIBM.SYSCOLUMNS where TBcreator =SCHEMANAME and TBNAME =TABLENAME;
1.utiliser db2 décrire la table
db2 describe table tabschema.tabname
2.utiliser db2 décrire la sortie
db2 "describe select * from tabschema.tabname"
3. Utilise l'utilitaire db2look
db2look -d dbname -e -t tabname
4. Trouver des lignes dans db2 syscat
db2 "Select * from syscat.columns wher tabname='' and tabschema =''"
Comment afficher la structure de la table dans la base de données db2
Ouvrir db2
fenêtre de commande, connectez-vous à db2 avec la commande suivante.
> db2 connect to DATABASE_NAME USER USERNAME USING PASSWORD
Une fois la connexion établie, lancez la commande suivante pour afficher la structure de la table.
> db2 "describe select * from SCHEMA_NAME.TABLE_NAME"
La commande ci-dessus affiche la structure de la table db2 au format tabulaire.
Remarque: testé sur le client DB2 9.7.11
Vous pouvez obtenir les métadonnées de la table en utilisant cette requête
SELECT * FROM SYSIBM.COLUMNS WHERE TABLE_NAME = 'ASTPCLTEXT';
exemple php pour iSeries (as400) db2, oui cela a fonctionné!
$i5 = db2_connect($database, $user, $password, array("i5_lib"=>"qsys2"));
$querydesc = "select * from qsys2.syscolumns where table_schema = '".$library."' and table_name = '".$table_name."' ";
$result = db2_exec($i5, $querydesc);
aussi si vous voulez juste lister toutes les tables avec leurs descriptions
$query = "select TABLE_NAME, TABLE_TEXT from systables where table_schema = '$library' ";
$result = db2_exec($i5, $query);
Utilisez ce qui suit pour vérifier la description de la table pour une seule table
DESCRIBE TABLE Schema Name.Table Name
joignez les tables ci-dessous pour vérifier la description de la table pour plusieurs tables, joignez-vous à l'ID de table syscat.tables et syscat.columns
Vous pouvez également vérifier les détails des index de la table à l’aide de la commande ci-dessous, décrire les index de la table. Montrer les détails
Control Center a déjà la fonctionnalité de cela. C'est juste en dessous de la liste du tableau.
si vous utilisez Aqua Data studio, écrivez simplement select * dans nom_table et au lieu d'appuyer sur exécuter, appuyez sur ctrl + D.
Vous pourrez voir la description de la table
pour obtenir toutes les tables: (vous souhaiterez peut-être restreindre le schéma à votre schéma)
select * from syscat.tables
pour obtenir toutes les colonnes: (où nom_table = votre nom_tab)
select * from syscat.columns
J'utilise DB2/LINUXX8664 10.5.3 et describe select * from schema_name.table_name
travaille pour moi.
Toutefois, describe table schema_name.table_name
échoue avec cette erreur:
SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000
Comme beaucoup d’entre eux l’ont déjà mentionné, le moyen le plus simple est de faire un TABLEAU DESCRIER.
Cependant, vous pouvez aussi obtenir les mêmes informations supplémentaires à partir de
db2> SELECT * SYSCAT.TABLES
db2> SELECT * FROM SYSCAT.COLUMNS
J'utilise généralement SYSCAT.COLUMNS pour rechercher les tables associées dans la base de données où je connais déjà le nom de la colonne :)
Si vous souhaitez obtenir le DDL d’une table ou de l’ensemble de la base de données, utilisez db2look.
# db2look -d *dbname* -t *tablename* > tablestructure.out
Cela générera le fichier ".out" qui contiendra le script DDL de la table en question.
# db2look -d *dbname* -e > dbstructure.out
Cela générera la DDL de la base de données entière en tant que fichier de script unique. Il est généralement utilisé pour répliquer la base de données. "-E" indique que l'utilisateur souhaite exporter une DDL de manière à recréer exactement la même configuration dans une nouvelle base de données.
J'espère que cela pourra aider quelqu'un à la recherche de telles réponses :)
drop view lawmod9t.vdesc
create view lawmod9t.vDesc as select
upper(t.table_cat) as Catalog,
upper(t.table_schem) as Schema,
upper(t.table_name) as table,
t.table_text as tableDesc,
c.system_column_name as colname_short,
c.column_name as colname_long,
c.column_text as coldesc,
c.Type_Name as type,
c.column_Size as size
from sysibm.SQLColumns c
inner join sysibm.sqltables t
on c.table_schem = t.table_schem
and c.table_name = t.table_name
select * from vdesc where table = 'YPPPOPL'
L'OP ne mentionne pas s'il s'agit de DB2/400, mais j'ai découvert que la seule manière d'obtenir la structure de la table, y compris les descriptions de noms de colonnes, était d'utiliser DSPFFD.
DSPFFD FILE(TBNAME) OUTPUT(*OUTFILE) OUTFILE(SOMELIB/TBDESC)
Ceci place la description de TBNAME dans une table appelée TBDESC dans la bibliothèque SOMELIB. Vous pouvez alors interroger cela avec:
select * from SOMELIB/TBDESC
J'utilise Aquadata Studio 12.0.23, plusieurs versions plus récentes. Donc, votre expérience peut être meilleure que la mienne. J'ai trouvé que le meilleur moyen d'obtenir une vue d'ensemble consistait à utiliser le générateur ERD. Cela a pris quelques heures, car la normalisation n'était pas un concept utilisé dans la conception de cette base de données il y a presque 30 ans. J'ai pu obtenir des définitions pour tous les objets en quelques heures, avec un fichier pour chacun.