Я просто ищу простой запрос для выбора всех имен таблиц для данной схемы.
Например, наша БД имеет более 100 таблиц, и мне нужно найти любую таблицу, содержащую подстроку "CUR". Я могу использовать подобную команду, когда у меня есть все таблицы.
Я просто ищу простой запрос для выбора всех имен таблиц для данной схемы.
Например, наша БД имеет более 100 таблиц, и мне нужно найти любую таблицу, содержащую подстроку "CUR". Я могу использовать подобную команду, когда у меня есть все таблицы.
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 one) имеет несколько разные столбцы. Для этого я считаю, что вам нужен столбец CREATOR
.
В любом случае вы должны изучить документы IBM для своего конкретного варианта. Название таблицы почти наверняка не изменится, поэтому просто посмотрите SYSIBM.SYSTABLES
для деталей.
DB2 LIST TABLES FOR SCHEMA <schema_name>
В моем iSeries мне нужно запустить эту команду из iNavigator:
select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
Вы должны попробовать следующее:
select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
Используя команды DB2 (без SQL), существует возможность выполнения
db2 LIST TABLES FOR ALL
Показывает все таблицы во всех схемах базы данных.
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
Для 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
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
каталога SYSIBM
(которые SYSCAT
каталоге 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 Server для VSE и VM используется SYSTEM.SYSCATALOG
который описан здесь. DB2 Server for VSE и VM SQL Reference
SELECT CREATOR, TNAME FROM SYSTEM.SYSCATALOG WHERE TABLETYPE = 'R'
select name from sysibm.systables
where name like '%ISP%'
and type = 'T'
Вы также можете получить имена таблиц, просто набрав ТАБЛИЦЫ LIST в DB2
Это должно работать:
select * from syscat.tables
SELECT
name
FROM
SYSIBM.SYSTABLES
WHERE
type = 'T'
AND
creator = 'MySchema'
AND
name LIKE 'book_%';
В данных нет большой разницы. Основная разница - порядок столбцов В столбце таблицы таблиц таблиц столбца таблицы/представления В таблицах списков показано, что столбец схемы будет после столбца
В db2warehouse я обнаружил, что "владелец" не существует, поэтому я описываю таблицу syscat.systables и вместо этого пытаюсь использовать CREATOR, и это работает.
db2 "select NAME from sysibm.systables where CREATOR = '[SCHEMANAME]'and type = 'T'"