【发布时间】:2021-06-21 00:48:37
【问题描述】:
我正在构建一个患者记录导出系统以从 SQL Server 中提取数据。客户想要 Excel 工作簿形式的数据。
数据的保存方式是动态创建数据库中的表,并且列名根据导出参数而变化。
我想要做的是枚举数据库中的表格,然后将这些表格(包括列标题)导出(或导入)到 Excel 中的单独工作表中。
所以:-
如果数据库是:-
dbo.table1 (name, address, postcode)
dbo.table2 (height, weight, headcirc)
我最终得到了一个 Excel 工作簿:-
Sheet1: Name Address Postcode
Sheet2: Height Weight, Headcirc
目前,我研究过的每种方法都需要 Excel 提前知道它接收到的数据的结构。对于给定的导出,不可能事先知道表的数量或这些表中列的名称。
例如,OPENROWSET 要求列标题出现在 Excel 工作簿中。 SSIS 似乎需要对 SQL 表列和 Excel 工作簿列的固定映射。
我能想到的唯一其他方法是使用动态 BCP 进程将所有表导出为 CSV,然后查看是否可以找到一些 VBA 允许我将文件夹中的所有 CSV 文件同化到单个 Excel 工作簿中作为单独的工作表 - 但这看起来很笨重。
我相信这一定是可能的 - 有没有人做到这一点?什么方法可行?
【问题讨论】:
标签: excel tsql import ssis export