Je cherche simplement une requête simple pour sélectionner tous les noms de table pour un schéma donné. Par exemple, notre DB a plus de 100 tables et j'ai besoin de trouver n'importe quelle table qui contient la sous-chaîne "CUR". Je peux utiliser la commande like une fois que j'ai toutes les tables.DB2 Requête pour récupérer tous les noms de table pour un schéma donné
Répondre
select * from sysibm.systables
where owner = 'SCHEMA'
and name like '%CUR%'
and type = 'T';
Cela vous donnera toutes les tables avec CUR
en eux dans le schéma SCHEMA
. Pour plus de détails sur le tableau SYSIBM.SYSTABLES
, voir here pour plus de détails. Si vous regardez le volet de navigation à gauche, vous pouvez obtenir toutes sortes de merveilleuses méta-données DB2.
Notez que ce lien est pour le mainframe DB2/z. DB2/LUW (Linux/UNIX/Windows) a des colonnes légèrement différentes. Pour cela, je crois que vous voulez la colonne CREATOR
.
Dans tous les cas, vous devez examiner les documents IBM pour votre variante spécifique. Le nom de la table ne sera certainement pas changer cependant, il suffit de rechercher SYSIBM.SYSTABLES
pour les détails.
Cela devrait fonctionner:
select * from syscat.tables
DB2 LIST TABLES FOR SCHEMA <schema_name>
cette option a l'avantage d'être insensible à la casse. – Brannon
select name from sysibm.systables
where name like '%ISP%'
and type = 'T'
Essayez ceci:
select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
Vous pouvez également obtenir les noms de table en tapant simplement TABLES LIST dans DB2
Ce n'est pas vrai. 'LIST TABLES' donne 0 tables pour moi. Tandis que 'LISTE TABLES SCHEMAX'résiste dans les 796 tables de ce schéma. Par conséquent, "LIST TABLES" ne montre pas nécessairement toutes les tables. – schneiti
En utilisant les commandes DB2 (pas de SQL) il y a le possibi lité d'exécution
db2 LIST TABLES FOR ALL
Ceci affiche toutes les tables de tous les schémas de la base de données.
Cela est très pratique si vous ne connaissez pas le schéma que vous recherchez, ou si vous souhaitez afficher une liste de toutes les tables de votre base de données dans un fichier. 'db2" liste les tables pour tout "> tables.txt' – bonh
C'est ce que je voulais! Merci! –
Sur mon iSeries je dois exécuter cette commande à partir iNavigator:
select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
db2 connect to MY_INSTACE_DB with myuser -- connect to db2
db2 "select TABNAME from syscat.tables where tabschema = 'mySchema' with ur"
db2 terminate -- end connection
SELECT
name
FROM
SYSIBM.SYSTABLES
WHERE
type = 'T'
AND
creator = 'MySchema'
AND
name LIKE 'book_%';
Il n'y a pas de grande différence dans la différence données.Système Major est la colonne ordre Dans les tables de liste, la colonne du schéma sera placée après la colonne table/vue Dans les tables de liste, afficher les détails La colonne de schéma sera après le type de colonne
'SQL0206N" OWNER "n'est pas valide dans le contexte où il est utilisé. SQLSTATE = 42703' –
@Marius, vous pouvez avoir un schéma différent dans votre variante DB2 - c'était spécifique à DB2/z, ce que nous appelons le _real_ DB2 :-) Par exemple, dans DB2/LUW, vous utiliseriez CRÉATEUR. Cela ne change pas la réponse sous-jacente, qui consiste à utiliser 'systables'. – paxdiablo
mon mauvais: J'utilise ** DB2/LUW ** en effet. –