Sybase Anywhere 11 元数据[SQL Schema]
前言
近兩天的工作是將以前項(xiàng)目的Sybase Anywhere 11數(shù)據(jù)庫表結(jié)構(gòu)以及數(shù)據(jù)導(dǎo)出到Sqlite上,起初想法是通過PowerDesigner來做反向工程然后再導(dǎo)出。裝工具找資料折騰老半天,一方面不是很會(huì)用,勉強(qiáng)能將表反向工程到PowerDesigner,導(dǎo)出時(shí)又發(fā)現(xiàn)不支持Sqlite導(dǎo)出,隱約覺得到時(shí)候?qū)?shù)據(jù)可能還是有問題,所以決定放棄這條路線。之前有接觸過代碼生成,對(duì)取元數(shù)據(jù)(表結(jié)構(gòu))相對(duì)熟練,打算自己寫代碼來導(dǎo)出。由于之前沒有接觸過Sybase Anywhere 11數(shù)據(jù)庫,所以也差不多弄了一天才把這個(gè)語句試出來,備忘和分享一下。
?
致謝
1. http://stackoverflow.com/questions/2263300/introspecting-identity-columns-in-sybase-sql-anywhere 是這個(gè)帖子中提到的systab幫助我找到相關(guān)的表?
?
正文
一、取得所有用戶表
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
二、取得表的詳細(xì)字段信息
select?c.name?as?ColumnName,?c.length,?c.prec,?c.scale,baset.name?as?[DataType],stb.pkey,stb.[nulls],stb.[default],stb.remarksfrom?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 以上取表結(jié)構(gòu)語句不能取到數(shù)據(jù)類型為“uniqueidentifierstr”的字段,這個(gè)字段在sysobjects和syscolumns沒有!!但是SYSCOLUMN里面能找到,所以隨后需要再研究一下,找到辦法了會(huì)再來更新此文。
3.2 取試圖和存儲(chǔ)過程等其他取元數(shù)據(jù)的SQL語句隨后要用到或者有時(shí)間并且能弄出來的話再貼出來更新此文。
?
結(jié)束語
明白原理了,就不用花大把大把的時(shí)間去研究人家工具了,一方面有點(diǎn)殺雞用牛刀,再者自己寫的時(shí)間比研究工具的時(shí)間可能要短,并且更加實(shí)用一些(找破解、一動(dòng)就是幾百兆的軟件安裝 - -#)。再次感謝搜索引擎,雖然沒有直接找到,但是給的暗示足夠我完成這項(xiàng)任務(wù) : )
?
?
本博相關(guān)文章1. ^全 ^ 獲取SQL SERVER2000/2005、MySql、Oracle元數(shù)據(jù)的SQL語句 [SQL語句來自CodeSmith]
2. PowerDesigner 12 根據(jù)名稱生成注釋(續(xù))
3. PowerDesigner 12 根據(jù)名稱生成注釋(完整示例)
?
?
總結(jié)
以上是生活随笔為你收集整理的Sybase Anywhere 11 元数据[SQL Schema]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exchange bin先常用工具
- 下一篇: Excel:如何使用函数实现多表多条件汇