在给定表/视图的SQL Server中,如何在表单中生成表/视图的定义:
C1 int,
C2 varchar(20),
C3双
执行此操作所需的信息包含在SQL Server的元表中,但是是否有标准的脚本/ IDE设备以上述形式输出其中包含的数据?
对于好奇我想要这个,因为我必须维护一些包含Table对象的SP(这是SQL Server使用的临时表的一种形式)。 Table对象需要匹配数据库中已有的表或视图的定义 - 如果可以自动生成这些定义,它将使生活变得更加容易。
答案 0 :(得分:1)
以下列出表中列的名称和类型的示例:
select
COLUMN_NAME,
COLUMN_DEFAULT,
IS_NULLABLE,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION,
NUMERIC_SCALE
from
INFORMATION_SCHEMA.COLUMNS
where
TABLE_NAME = 'YOUR_TABLE_NAME_HERE'
order by
Ordinal_Position
从该信息生成DDL更加困难。 SQLTeam
似乎有一些建议答案 1 :(得分:0)
如果您想复制表定义,可以使用:
select top 0
*
into
newtable
from
mytable
编辑:抱歉,只是重新阅读您的问题,并意识到这可能无法解答。您能否清楚自己的目标是什么,是否需要完全复制表定义,或者包含有关表定义信息的表?
答案 2 :(得分:0)
感谢您的回复。是的我确实想要一个完全重复的DDL,但我意识到我错误地说明了我需要的东西。它是DDL,它将创建一个与视图列匹配的临时表。
我在看Duckworths的建议时意识到这一点 - 这很好,但不幸的是不包括视图的情况。
选择视图定义 INFORMATIONSCHEMA.VIEWS
...将为您提供视图中的列列表(并假设视图中的所有列都是直接从表中派生的),然后可以使用Duckworths建议的修订版本将相关内容汇总到一起DLL。
我很惊讶它并不容易!我希望有人告诉我,有一个完善的例程可以做到这一点,因为TABLE对象需要完全定义所有列(而不是Oracle的做法,就是说 - “给我一些看起来像表X的东西”
无论如何,再次感谢您的帮助,欢迎任何进一步的建议。
答案 3 :(得分:0)
在另一个问题的this posting中,我有一个DB逆向工程脚本,它将执行表,视图,PK,UK和索引定义以及外键。这个是针对SQL Server 2005的,并且是我最初为SQL Server 2000编写的端口。如果您需要SQL Server 2000版本,请在此帖子中添加评论,我将在此处发布。