Sql server Excel-将数据源转换为数据字典
这可能是问这个问题的错误地方,但我正在尝试从SQL数据源获取数据,将其放入Excel,并从前面提到的SQL数据源自动生成数据字典。有人做过这件事或者知道怎么做吗 [编辑]Sql server Excel-将数据源转换为数据字典,sql-server,excel,Sql Server,Excel,这可能是问这个问题的错误地方,但我正在尝试从SQL数据源获取数据,将其放入Excel,并从前面提到的SQL数据源自动生成数据字典。有人做过这件事或者知道怎么做吗 [编辑] 我需要的是所有的表名,每个表中的所有列(每个表都是它自己的excel选项卡),对于每个列,我需要数据类型,以及它是否可以为空假设您指的是数据库中包含列元数据的列列表,这是一次性需要,并且不需要太多的自动化 我将在SSMS中执行以下操作 SELECT Table_name FROM INFORMATION_SCHEMA.TABL
我需要的是所有的表名,每个表中的所有列(每个表都是它自己的excel选项卡),对于每个列,我需要数据类型,以及它是否可以为空假设您指的是数据库中包含列元数据的列列表,这是一次性需要,并且不需要太多的自动化 我将在SSMS中执行以下操作
SELECT Table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
DECLARE @tableName sysname
DECLARE table_cursor CURSOR FAST_FORWARD FOR
SELECT Table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
OPEN table_cursor
FETCH NEXT FROM table_cursor
INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT TABLE_NAME,
COLUMN_NAME,
Data_type + COALESCE('(' + Cast(Character_Maximum_length as varchar) + ')' ,'') DataType,
IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = @tableName
FETCH NEXT FROM table_cursor
INTO @tableName
END
CLOSE table_cursor
DEALLOCATE table_cursor
这将输出多个结果集,第一个是表名,然后后面的每个人都是您提到的列数据
如果愿意的话,您可以去掉光标,只需要两个输出,但我发现按Ctrl+A Ctrl+Con更容易每个网格,Conrad肯定在正确的轨道上,但是如果您需要列信息,您可能希望使用信息\u schema.columns而不是信息\u schema.tables。信息_schema.columns将为您提供数据类型、是否可为空、列所在的表以及数据库中所有表的更多信息
如果您需要将其按表分解,以便将其放在每个表中,我将使用循环从每个表的information\u schema.columns中获取单独的结果集。我尝试了这种方法,得到了我需要的结果
SELECT T.NAME 'TABLE',C.NAME 'COLUMN' ,S.NAME 'DATATYPE',C.is_nullable 'ISNULL'
FROM SYS.TABLES T INNER JOIN SYS.COLUMNS C ON T.OBJECT_ID=C.OBJECT_ID
INNER JOIN SYS.TYPES S ON C.SYSTEM_TYPE_ID=S.SYSTEM_TYPE_ID
WHERE T.TYPE='U'
ORDER BY T.NAME,C.NAME