首页 > 解决方案 > SSIS 动态 Excel 目标文件名作为表名

问题描述

我收到一个包含以下信息的 excel 文件:

SQL SERVER          SCHEMA  TABLENAME
AdventureWorksDW    Dbo     DimOrganization
AdventureWorksDW    Dbo     ...
...                 ...     ...

我想使用 SSIS 将上述 TABLENAME 中的所有列信息从 SQL Server 导出到 excel 表中。excel 文件名应该是上面的 TABLENAME。一张 Excel 表格的一个 TABLENAME,因此包应该是动态的。

输出:DimOrganization.xlsx(上面的 TABLENAME 等)

Number  Name                    Type            Required    Source
1       OrganizationKey         int             N           AdventureWorksDW.dbo.DimOrganization
2       ParentOrganizationKey   int             Y           AdventureWorksDW.dbo.DimOrganization
3       PercentageOfOwnership   nvarchar(16)    Y           AdventureWorksDW.dbo.DimOrganization
4       OrganizationName        nvarchar(50)    Y           AdventureWorksDW.dbo.DimOrganization
5       CurrencyKey             int             Y           AdventureWorksDW.dbo.DimOrganization

为了从 SQL 中获取上面的列信息,我的 SQL 任务将是:

SELECT
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) [Number],
COLUMN_NAME Name, 
DATA_TYPE +
CASE 
WHEN CHARACTER_MAXIMUM_LENGTH IS NULL THEN ''
ELSE '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) +')' 
END Type,
    CASE IS_NULLABLE
                WHEN 'NO' THEN 'N'
                ELSE 'Y'
            END AS Required,
IC.TABLE_CATALOG+'.'+IC.TABLE_SCHEMA+'.'+Ic.TABLE_NAME [Source]
FROM AdventureWorksDW.INFORMATION_SCHEMA.COLUMNS IC
WHERE TABLE_NAME = 'DimOrganization'

我应该在 SSIS 中做什么来为上面的每个 TABLENAME 创建每个 excel 文件而不使用脚本?

我相信我需要添加变量和参数来分配 WHERE TABLE_NAME = ? 这样,如果我更改 TABLE_NAME 变量并运行它,如果有效,它将从 SQL 中检索信息,将元数据信息输入到 excel 文件中并将 excel 保存为文件名?任何想法?

标签: exceldynamicssistablename

解决方案


推荐阅读