从Sybase数据库,我如何获取表描述(字段名称和类型)?

aar*_*ist 25 sql sybase metadata isql sybase-ase

我可以访问命令行isql,我喜欢获取给定数据库的所有表的元数据,可能是格式化文件.我怎么能做到这一点?

谢谢.

Luk*_*sik 60

检查sysobjectssyscolumns表.

是Sybase系统表的图表.

所有用户表的列表:

SELECT * FROM sysobjects WHERE type = 'U'
Run Code Online (Sandbox Code Playgroud)

您可以将"U"更改为其他对象:

  • C - 计算列
  • D - 默认
  • F - SQLJ函数
  • L - 日志
  • N - 分区条件
  • P - Transact-SQL或SQLJ过程
  • PR - 准备对象(由Dynamic SQL创建)
  • R - 规则
  • RI - 参考约束
  • S - 系统表
  • TR - 触发器
  • U - 用户表
  • V - 视图
  • XP - 扩展存储过程

表中的列列表:

SELECT sc.* 
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'
Run Code Online (Sandbox Code Playgroud)


Pas*_*ent 46

sp_help 是你在找什么.

有关sp_help系统过程的Sybase联机文档:

描述

报告有关数据库对象(sysobjects中列出的任何对象)以及系统或用户定义的数据类型以及计算列和基于函数的索引的信息.列显示optimistic_index_lock.

句法

sp_help [objname]

[...]

以下是publishers表的(部分)输出(粘贴自在数据库对象上使用sp_help):

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
Run Code Online (Sandbox Code Playgroud)

仍引用在数据库对象上使用sp_help:

如果在不提供对象名称的情况下执行sp_help,则生成的报告将显示sysobjects中的每个对象及其名称,所有者和对象类型.还显示了systypes中每个用户定义的数据类型及其名称,存储类型,长度,是否允许空值以及绑定到它的任何默认值或规则.该报告还指出是否已为表或视图定义了任何主键或外键列.

  • 为什么这个答案没有得到更多的赞成?这是完美的解决方案. (4认同)
  • 链接不再适用于sp_help.尝试了,我的sybase版本说"错误:未找到过程'sp_help'(DBD:准备失败)" (2认同)

小智 6

Sybase IQ:

describe table_name;
Run Code Online (Sandbox Code Playgroud)


Kis*_*ore 5

     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'
Run Code Online (Sandbox Code Playgroud)