Sybase Anywhere 11 元数据[SQL Schema]


前言

  近两天的工作是将以前项目的Sybase Anywhere 11数据库表结构以及数据导出到Sqlite上,起初想法是通过PowerDesigner来做反向工程然后再导出。装工具找资料折腾老半天,一方面不是很会用,勉强能将表反向工程到PowerDesigner,导出时又发现不支持Sqlite导出,隐约觉得到时候导数据可能还是有问题,所以决定放弃这条路线。之前有接触过代码生成,对取元数据(表结构)相对熟练,打算自己写代码来导出。由于之前没有接触过Sybase Anywhere 11数据库,所以也差不多弄了一天才把这个语句试出来,备忘和分享一下。

 

致谢

  1.  http://stackoverflow.com/questions/2263300/introspecting-identity-columns-in-sybase-sql-anywhere  是这个帖子中提到的systab帮助我找到相关的表 

 

正文

  一、取得所有用户表

select  st.table_name,st.remarks  from  sysobjects tbl 
inner   join  SYSTABLE st  on  st. object_id   =  tbl.id
where  tbl.type  =   ' U '   and  tbl.uid  =   1


  二、取得表的详细字段信息

select  c.name  as  ColumnName, c.length, c.prec, c.scale,baset.name  as   [ DataType ] ,stb.pkey,stb. [ nulls ] ,stb. [ default ] ,stb.remarks
from  sysobjects tbl
inner   join  dbo.syscolumns  as  c  on  tbl.id = c.id
inner   join  SYSTABLE st  on  st. object_id   =  tbl.id
inner   join  SYSCOLUMN stb  on  stb.column_name  =   c.name  and  stb.table_id  =  st.table_id
inner   join  systypes  as  baset  on  c.type  =  baset.type  and  c.usertype  =  baset.usertype
where  tbl.name = ' {0} '   and  tbl.type  =   ' U '   and  tbl.uid  =   1

    注意"tbl.name='{0}'"替换成表名,这里就不考虑额外的情况了。

 

  三、注意问题

    3.1  以上取表结构语句不能取到数据类型为“uniqueidentifierstr”的字段,这个字段在sysobjects和syscolumns没有!!但是SYSCOLUMN里面能找到,所以随后需要再研究一下,找到办法了会再来更新此文。

    3.2  取试图和存储过程等其他取元数据的SQL语句随后要用到或者有时间并且能弄出来的话再贴出来更新此文。

 

结束语

  明白原理了,就不用花大把大把的时间去研究人家工具了,一方面有点杀鸡用牛刀,再者自己写的时间比研究工具的时间可能要短,并且更加实用一些(找破解、一动就是几百兆的软件安装 - -#)。再次感谢搜索引擎,虽然没有直接找到,但是给的暗示足够我完成这项任务 : )

 

 

本博相关文章

  1.  ^全 ^ 获取SQL SERVER2000/2005、MySql、Oracle元数据的SQL语句 [SQL语句来自CodeSmith]

  2.  PowerDesigner 12 根据名称生成注释(续)

  3.  PowerDesigner 12 根据名称生成注释(完整示例)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sybase参考手册史上最完全版,共四本,这是第二本 《命令》 《Adaptive Server 参考手册》包含有关 Sybase® Adaptive Server® Enterprise 和 Transact-SQL® 语言的四本指南: • 《构件块》介绍了 Transact-SQL 的各个部件:数据类型、内置函 数、全局变量、表达式、标识符、保留字和 SQLSTATE 错误。 要想成功使用 Transact-SQL,您首先必须了解这些构件块的功 能,以及它们对 Transact-SQL 语句执行结果的影响。 • 《命令》提供了有关用于创建语句的各种 Transact-SQL 命令的 参考信息。 • 《过程》提供了有关系统过程、目录存储过程、扩展存储过程和 dbcc 存储过程的参考信息。所有过程都是使用 Transact-SQL 语 句创建的。 • 《表》提供了有关系统表的参考信息。系统表用于存储有关服务 器、数据库和用户的信息,以及服务器的其它详细信息。它还 提供有关 dbccdb 和 dbccalt 数据库中的表的信息。 约定以下各部分将说明在这些参考手册指南中使用的约定。 SQL 是一种形式自由的语言。没有规定每一行中的单词数量或者必 须换行的地方。然而,为便于阅读,本手册中所有示例和大多数语 法语句都经过了格式设置,以便语句的每个子句都在一个新行上开 始。有多个成分的子句会扩展到其它行,这些行会有缩进。复杂命 令使用已修改的 Backus Naur Form (BNF) 表示法进行了格式处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值