Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Excel-将数据源转换为数据字典_Sql Server_Excel - Fatal编程技术网

Sql server Excel-将数据源转换为数据字典

Sql server Excel-将数据源转换为数据字典,sql-server,excel,Sql Server,Excel,这可能是问这个问题的错误地方,但我正在尝试从SQL数据源获取数据,将其放入Excel,并从前面提到的SQL数据源自动生成数据字典。有人做过这件事或者知道怎么做吗 [编辑] 我需要的是所有的表名,每个表中的所有列(每个表都是它自己的excel选项卡),对于每个列,我需要数据类型,以及它是否可以为空假设您指的是数据库中包含列元数据的列列表,这是一次性需要,并且不需要太多的自动化 我将在SSMS中执行以下操作 SELECT Table_name FROM INFORMATION_SCHEMA.TABL

这可能是问这个问题的错误地方,但我正在尝试从SQL数据源获取数据,将其放入Excel,并从前面提到的SQL数据源自动生成数据字典。有人做过这件事或者知道怎么做吗

[编辑]


我需要的是所有的表名,每个表中的所有列(每个表都是它自己的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