2010-08-27 75 views

Respuesta

56
select * from sysibm.systables 
where owner = 'SCHEMA' 
and name like '%CUR%' 
and type = 'T'; 

Esto le dará todas las mesas con CUR en ellos en el esquema SCHEMA.

Consulte here para obtener más información sobre la tabla SYSIBM.SYSTABLES. Si echas un vistazo al panel de navegación de la izquierda, puedes obtener todo tipo de metadatos de DB2 maravillosos.

Tenga en cuenta que este enlace es para el mainframe DB2/z. DB2/LUW (el de Linux/UNIX/Windows) tiene columnas ligeramente diferentes. Para eso, creo que quieres la columna CREATOR.

En cualquier caso, debe examinar los documentos de IBM para su variante específica. Sin embargo, el nombre de la tabla no cambiará, así que simplemente busque SYSIBM.SYSTABLES para más detalles.

+3

'SQL0206N" PROPIETARIO "no es válido en el contexto donde se usa. SQLSTATE = 42703' –

+6

@Marius, puede tener un esquema diferente en su variante de DB2; esto era específico de DB2/z, lo que nos gusta llamar el _real_ DB2 :-) Por ejemplo, en DB2/LUW, usted usaría CREADOR. No cambia la respuesta subyacente, que es usar 'systables'. – paxdiablo

+1

my bad: estoy usando ** DB2/LUW ** de hecho. –

-1

Esto debería funcionar:

select * from syscat.tables 
25
DB2 LIST TABLES FOR SCHEMA <schema_name> 
+1

esta opción tiene la ventaja de no distinguir entre mayúsculas y minúsculas. – Brannon

3
select name from sysibm.systables 
where name like '%ISP%' 
and type = 'T' 
9

usted debe tratar esto:

select TABNAME from syscat.tables where tabschema = 'yourschemaname'"; 
1

También puede obtener los nombres de las tablas simplemente escribiendo lista las tablas de DB2

+2

Eso no es verdad. 'LIST TABLES' da como resultado 0 tablas para mí. Mientras que 'LIST TABLES SCHEMAX' da como resultado las 796 tablas de ese esquema. Por lo tanto, 'LIST TABLES' no necesariamente muestra todas las tablas. – schneiti

6

Usando los comandos de DB2 (sin SQL) existe la posibilidad lity de ejecutar

db2 LIST TABLES FOR ALL 

Esto muestra todas las tablas en todos los esquemas en la base de datos.

ref: show all tables in DB2 using the LIST command

+4

Esto es realmente útil si no conoce el esquema que está buscando, o si desea volcar una lista de todas las tablas de su base de datos en un archivo. 'db2" list tables for all "> tables.txt' – bonh

+0

¡Eso es lo que quería! ¡Gracias! –

11

En mis iSeries tengo que ejecutar este comando desde inavigator:

select * 
from QSYS2.SYSTABLES 
where TABLE_SCHEMA 
like 'SCHEMA_NAME' 
and TYPE = 'T'; 
2
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 
0
SELECT 
    name 
FROM 
    SYSIBM.SYSTABLES 
WHERE 
    type = 'T' 
    AND 
    creator = 'MySchema' 
    AND 
    name LIKE 'book_%'; 
0

No hay gran diferencia en diferencia principal es data.The orden de las columnas En las tablas de la lista, la columna del esquema estará después de la columna de la tabla/vista En las tablas de la lista se mostrará la columna del esquema de detalles después del tipo de columna

Cuestiones relacionadas