ver una todas toda tipo tabla registro procedimiento para palabra obtener las descripcion datos dato como campos campo buscar bases almacenado sql metadata sybase sybase-ase isql

una - procedimiento almacenado para buscar un registro en sql



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

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

Gracias.


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

SELECCIONE texto DE syscomments DONDE id = OBJECT_ID (''MySchema.MyTable'') ORDEN POR número, colid2, colid

Disfruta patrick


Compruebe las tablas sysobjects y syscolumns .

Here hay un diagrama de las tablas del sistema Sybase.

Lista de todas las tablas de usuario:

SELECT * FROM sysobjects WHERE type = ''U''

Puedes cambiar ''U'' a otros objetos:

  • C - columna calculada
  • D - por defecto
  • F - función SQLJ
  • L - log
  • N - condición de partición
  • P - Procedimiento Transact-SQL o SQLJ
  • PR - preparar objetos (creados por SQL dinámico)
  • R - regla
  • RI - restricción referencial
  • S - tabla del sistema
  • TR - disparador
  • U - tabla de usuario
  • V - vista
  • XP - 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''


Cuando encuentre la tabla de usuarios, en caso de que también desee 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


En la versión de Sybase que uso, lo siguiente proporciona 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


Puede buscar la columna en todas las tablas en 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''


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

Así que 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


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.


Sybase IQ:

describe table_name;


sp_help es lo que estás buscando.

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

Descripción

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

Sintaxis

sp_help [objname]

[...]

Aquí está la salida (parcial) para la tabla de editores (pegada desde Usar 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 el uso de 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 los sistemas y su nombre, tipo de almacenamiento, longitud, si se permiten valores nulos, y cualquier valor predeterminado o reglas vinculadas a ellos. El informe también señala si se han definido columnas de clave primaria o foránea para una tabla o vista.


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


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''