DB2 Query для получения всех имен таблиц для данной схемы - PullRequest
37 голосов
/ 27 августа 2010

Я просто ищу простой запрос, чтобы выбрать все имена таблиц для данной схемы.

Например, в нашей БД более 100 таблиц, и мне нужно найти любую таблицу, которая содержит подстроку «CUR». Я могу использовать команду like, когда у меня есть все таблицы.

Ответы [ 13 ]

68 голосов
/ 27 августа 2010
select * from sysibm.systables
where owner = 'SCHEMA'
and name like '%CUR%'
and type = 'T';

Это даст вам все таблицы с CUR в схеме SCHEMA.

См. здесь для более подробной информации о таблице SYSIBM.SYSTABLES. Если вы посмотрите на панель навигации слева, вы можете получить все виды замечательных метаданных DB2.

Обратите внимание, что эта ссылка предназначена для мейнфрейма DB2 / z. В DB2 / LUW (Linux / UNIX / Windows) столбцы немного отличаются. Для этого, я полагаю, вам нужен столбец CREATOR.

В любом случае вам следует проверить документы IBM для вашего конкретного варианта. Имя таблицы почти наверняка не изменится , поэтому просто посмотрите SYSIBM.SYSTABLES для подробностей.

26 голосов
/ 06 сентября 2011
DB2 LIST TABLES FOR SCHEMA <schema_name>
18 голосов
/ 05 января 2016

На моем iSeries мне нужно запустить эту команду из iNavigator:

select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
10 голосов
/ 01 декабря 2012

Вы должны попробовать это:

select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
8 голосов
/ 14 августа 2014

С помощью команд DB2 (без SQL) существует возможность выполнения

db2 LIST TABLES FOR ALL

Здесь показаны все таблицы во всех схемах в базе данных.

ref: показать все таблицы в DB2 с помощью команды LIST

3 голосов
/ 14 сентября 2018

Для Db2 для Linux, Unix и Windows (т.е. Db2 LUW) или для Db2 Warehouse используйте представление каталога SYSCAT.TABLES. Например.

SELECT TABSCHEMA, TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA LIKE '%CUR%' AND TYPE = 'T'

Это оператор SQL, который будет возвращать все стандартные таблицы во всей схеме, содержащей подстроку CUR. Из командной строки Db2 вы также можете использовать команду CLP, например, db2 list tables for all | grep CUR к аналогичному эффекту

Эта страница описывает столбцы в SYSCAT.TABLES , включая различные значения для столбца TYPE.

A = Alias
G = Created temporary table
H = Hierarchy table
L = Detached table
N = Nickname
S = Materialized query table
T = Table (untyped)
U = Typed table
V = View (untyped)
W = Typed view

Другие часто используемые представления каталога включают

SYSCAT.COLUMNS      Lists the columns in each table, view and nickname
SYSCAT.VIEWS        Full SQL text for view and materialized query tables
SYSCAT.KEYCOLUSE    Column that are in PK, FK or Uniuqe constraints

В Db2 LUW считается плохой практикой использование таблиц каталога SYSIBM (из которых представления каталога SYSCAT выбирают их данные). Они менее согласованы с именами столбцов, не так просты в использовании, не документированы и с большей вероятностью меняются между версиями.

На этой странице представлен список всех видов каталога Дорожная карта к видам каталога


Для Db2 для z / OS , используйте SYSIBM.TABLES, который описан здесь . Э.Г.

SELECT CREATOR, NAME FROM SYSIBM.SYSTABLES WHERE OWNER LIKE '%CUR%' AND TYPE = 'T'

Для Db2 для i (т.е. iSeries aka AS / 400) используйте QSYS2.SYSTABLES, который описан здесь

SELECT TABLE_OWNER, TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA LIKE '%CUR%' AND TABLE_TYPE = 'T'

Для Сервер DB2 для VSE и VM используйте SYSTEM.SYSCATALOG, который описан здесь Справочник по серверу DB2 для VSE и VM SQL

SELECT CREATOR, TNAME FROM SYSTEM.SYSCATALOG WHERE TABLETYPE = 'R'
3 голосов
/ 08 августа 2016
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
2 голосов
/ 04 апреля 2012
select name from sysibm.systables 
where name like '%ISP%' 
and type = 'T'
0 голосов
/ 19 октября 2018

IN db2warehouse Я обнаружил, что «владелец» не существует, поэтому я описываю таблицу syscat.systables и пытаюсь использовать вместо нее CREATOR, и он работает.

db2 "select NAME from sysibm.systables where CREATOR = '[SCHEMANAME]'and type = 'T'"
0 голосов
/ 04 марта 2017

В данных нет большой разницы. Основное различие - порядок столбцов. В столбце схемы таблиц списка будет после столбца таблицы / представления. В таблицах списка подробностей столбец схемы будет после типа столбца

...