以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 01.如何从SQL SERVER 2000中读取某个表的数据结构 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25049) |
-- 作者:包头123 -- 发布时间:2012/10/30 10:17:00 -- 01.如何从SQL SERVER 2000中读取某个表的数据结构 版主: 我的数据库以内部表为主,还想连接SQL SERVER 2000,把其中数百个表的数据结构读入,并保存到内部表中,如何读取呢? 注意是读取表的数据结构,而不是表的数据内容。 请版主详细指点。 |
-- 作者:lin_hailun -- 发布时间:2012/10/30 10:28:00 -- 要么,用代码,要么一个一个地添加进来。 http://www.foxtable.com/help/topics/1812.htm 添加以后,重定向为内部数据源。 http://www.foxtable.com/help/topics/1565.htm |
-- 作者:包头123 -- 发布时间:2012/10/30 10:34:00 -- 02.版主及各位朋友: 我想把外部数据源各表的数据结构读入,不是读入其数据。 您给出的方法,好像是读取数据。 请问:用语句如何写呢? |
-- 作者:lin_hailun -- 发布时间:2012/10/30 10:44:00 -- 你添加外部表的时候,可以设置加载的行数…… 这只是个过程,不必太在意,我们的目的是 重定向 外部表成内部表。 |
-- 作者:包头123 -- 发布时间:2012/10/30 10:50:00 -- 03.版主: 我们自己开发了一套管理软件,数据库是SQL SERVER 2000,使用情况良好。 我的想法是,在内部表中,建立一个表,想把外部数据源相关数据表的数据结构保存起来。因此,管理的是外部数据源的表结构,而不是其数据。这样,我可以随时查询这些表的数据结构。 不知道我的想法说清楚了没有? |
-- 作者:qtcks -- 发布时间:2012/10/30 11:06:00 -- ---------表结构信息查询---------------- --sql server 2000 SELECT 表名 = case when a.colorder=1 then d.name else \'\' end, 表说明 = case when a.colorder=1 then isnull(f.value,\'\') else \'\' end, 字段序号 = a.colorder, 字段名 = a.name, 标识 = case when COLUMNPROPERTY( a.id,a.name,\'IsIdentity\')=1 then \'√\'else \'\' end, 主键 = case when exists(SELECT 1 FROM sysobjects where xtype=\'PK\' and parent_obj=a.id and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then \'√\' else \'\' end, 类型 = b.name, 占用字节数 = a.length, 长度 = COLUMNPROPERTY(a.id,a.name,\'PRECISION\'), 小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,\'Scale\'),0), 允许空 = case when a.isnullable=1 then \'√\'else \'\' end, 默认值 = isnull(e.text,\'\'), 字段说明 = isnull(g.[value],\'\') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype=\'U\' and d.name<>\'dtproperties\' left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid left join sysproperties f on d.id=f.id and f.smallid=0 where d.name=\'要查询的表\' --如果只查询指定表,加上此条件 order by a.id,a.colorder /* 表名 表说明 字段序号 字段名 标识 主键 类型 占用字节数 长度 小数位数 允许空 默认值 字段说明 ------- ----- ------- -------- ---- ------- ------ ------- --------------- ------ ---------- ---------- authors 1 au_id √ id 11 11 0 2 au_lname varchar 40 40 0 3 au_fname varchar 20 20 0 4 phone char 12 12 0 (\'UNKNOWN\') 5 address varchar 40 40 0 √ 6 city varchar 20 20 0 √ 7 state char 2 2 0 √ 8 zip char 5 5 0 √ 9 contract bit 1 1 0 (所影响的行数为 9 行) */ -------------------------------------------------------------------------------------------------------- |
-- 作者:lin_hailun -- 发布时间:2012/10/30 11:19:00 -- 嗯嗯,楼上已经很详细了,整合到狐表,代码如下。 Dim cmd As New SQLCommand cmd.C For Each tn As String In Connections("数据源").GetTableNames cmd.CommandText = "Select a.name as 列名, b.name as 类型 from sys.columns a join sys.types b on (a.system_type_id=b.system_type_id) where object_id=object_id(\'" & tn & "\')" Dim dt As DataTable = cmd.ExecuteReader For Each dr As DataRow In dt.DataRows msgbox(tn & "|" & dr("列名") & "|" & dr("类型")) Next Next |
-- 作者:包头123 -- 发布时间:2012/11/5 8:31:00 -- 非常感谢各位朋友的帮助。我试试看。 |