Desde una base de datos Sybase, ¿cómo puedo obtener la descripción de la tabla (nombres de campo y tipos)?

StackOverflow https://stackoverflow.com/questions/1429898

Pregunta

Tengo acceso a la línea de comando isql y me gusta obtener metadatos de todas las tablas de una base de datos dada, posiblemente en un archivo formateado. ¿Cómo puedo lograr eso?

Gracias.

¿Fue útil?

Solución

Marque sysobjects y syscolumns tablas.

Aquí es un diagrama de las tablas del sistema Sybase.

Lista de todas las tablas de usuarios:

SELECT * FROM sysobjects WHERE type = 'U'

Puede cambiar 'U' a otros objetos:

  • C & # 8211; columna calculada
  • D & # 8211; predeterminado
  • F & # 8211; Función SQLJ
  • L & # 8211; log
  • N & # 8211; condición de partición
  • P & # 8211; Procedimiento de Transact-SQL o SQLJ
  • PR & # 8211; preparar objetos (creados por Dynamic SQL)
  • R & # 8211; regla
  • RI & # 8211; restricción referencial
  • S & # 8211; tabla del sistema
  • TR & # 8211; disparador
  • U & # 8211; tabla de usuario
  • V & # 8211; ver
  • XP & # 8211; procedimiento almacenado extendido

Lista de columnas en una tabla:

SELECT sc.* 
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'

Otros consejos

sp_help es lo que está buscando.

De la documentación en línea de Sybase en procedimiento del sistema sp_help :

  

Descripción

     

Informa información sobre un objeto de base de datos (cualquier objeto listado en sysobjects) y sobre los tipos de datos definidos por el sistema o por el usuario, así como columnas calculadas e índices basados ??en funciones. La columna muestra optimistic_index_lock .

     

Sintaxis

     

sp_help [objname]

     

[...]

Aquí está el resultado (parcial) para la tabla de editores (pegado de Uso de sp_help en objetos de base de datos ):

Name               Owner        Object_type     Create_date 
----------------   -----------  -------------   ------------------------------
publishers         dbo          user table      Nov 9 2004 9:57AM

(1 row affected)
Column_name Type     Length   Prec  Scale   Nulls   Default_name   Rule_name
----------- -------  ------   ----- ------- ------- -------------- ---------- 
pub_id      char          4    NULL  NULL        0  NULL           pub_idrule
pub_name    varchar      40    NULL  NULL        1  NULL           NULL
city        varchar      20    NULL  NULL        1  NULL           NULL
state       char          2    NULL  NULL        1  NULL           NULL
Access_Rule_name    Computed_Column_object     Identity
------------------- -------------------------  ------------
NULL                NULL                                  0
NULL                NULL                                  0
NULL                NULL                                  0
NULL                NULL                                  0

Todavía citando Usando sp_help en objetos de base de datos :

  

Si ejecuta sp_help sin proporcionar un nombre de objeto, el informe resultante muestra cada objeto en sysobjects, junto con su nombre, propietario y tipo de objeto. También se muestra cada tipo de datos definido por el usuario en systypes y su nombre, tipo de almacenamiento, longitud, si se permiten valores nulos y los valores predeterminados o reglas vinculadas a él. El informe también señala si se han definido columnas de clave principal o externa para una tabla o vista.

Sybase IQ:

describe table_name;
     SELECT
DB_NAME() TABLE_CATALOG,
NULL TABLE_SCHEMA,
so.name TABLE_NAME,
sc.name COLUMN_NAME,
sc.colid ORDINAL_POSITION,
NULL COLUMN_DEFAULT,
CASE WHEN st.allownulls=1 THEN 'YES'
 ELSE 'NO'
END IS_NULLABLE,
st.name DATA_TYPE,
CASE WHEN st.name like '%char%' THEN st.length
END CHARACTER_MAXIMUM_LENGTH,
CASE WHEN st.name like '%char%' THEN st.length
END*2 CHARACTER_OCTET_LENGTH,
CASE WHEN st.name in ('numeric','int') THEN st.length
END NUMERIC_MAXIMUM_LENGTH,
CASE WHEN st.name in ('numeric','int') THEN st.prec
END NUMERIC_PRECISION,
NULL NUMERIC_PRECISION_RADIX,
CASE WHEN st.name in ('numeric','int') THEN st.scale
END NUMERIC_SCALE,
CASE WHEN st.name in ('datetime') THEN st.prec
END DATETIME_PRECISION,
NULL CHARACTER_SET_CATALOG,
NULL CHARACTER_SET_SCHEMA,
NULL COLLATION_CATALOG,
NULL COLLATION_SCHEMA,
NULL DOMAIN_CATALOG,
NULL DOMAIN_SCHEMA,
NULL DOMAIN_NAME
FROM 
sysobjects so
INNER JOIN 
syscolumns sc
ON sc.id = so.id
inner join systypes st on st.usertype = sc.usertype 
WHERE so.name = 'TableName'

Puede buscar una columna en todas las tablas de la base de datos usando:

SELECT so.name 
FROM sysobjects so
INNER JOIN syscolumns sc ON so.id = sc.id 
WHERE sc.name = 'YOUR_COLUMN_NAME'

sp_tables también funcionará en isql. Le da la lista de tablas en la base de datos actual.

Cuando encuentre una tabla de usuario, en caso de que también quiera el nombre del propietario de la tabla, puede usar lo siguiente:

select su.name + '.' + so.name
from   sysobjects so,
       sysusers   su
where  so.type = 'U' and
       so.uid  = su.uid
order  by su.name,
          so.name

Si desea usar un programa de línea de comandos, pero no está restringido a usar SQL, puede usar SchemaCrawler . SchemaCrawler es de código abierto y puede producir archivos en formato de texto plano, CSV o (X) HTML.

Aquí un enfoque diferente para obtener metadatos. Este útil comando SQL le devuelve la definición de tabla / vista como texto:

SELECCIONE el texto DE syscomments WHERE id = OBJECT_ID ('MySchema.MyTable') ORDER BY number, colid2, colid

Disfruta Patrick

En la versión de Sybase que uso, a continuación se ofrece una lista de columnas para la tabla seleccionada

select *
FROM sys.syscolumns sc
where tname = 'YOUR_TABLE_NAME'
--and creator='YOUR_USER_NAME' --if you want to further restrict tables
--according to the user name that created it

Para Sybase ASE, sp_columns table_name devolverá todos los metadatos de la tabla que está buscando.

Si Sybase es compatible con SQL-92, esta información se almacena en las tablas INFORMATION_SCHEMA.

Entonces, lo siguiente le dará una lista de tablas y vistas en cualquier base de datos compatible con SQL-92

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top