从excel导入到Sql Server

San*_*osh -3 sql-server asp.net ssis bulkinsert sqlbulkcopy

我有一个任务是将Excel数据导入Sql server.excel数据来自excel模板.有不同的excel模板可用于不同的cleint,因此excel中的列在所有模板中都不相同.必须将数据导入到SQl的一个公共表中.

我用google搜索,网上有很多样本,但我无法确定哪种方法最好.

我可以请你指导我如何实现上述考虑模板的动态列.

在excel模板中,开始行和结束行不是固定的.

bil*_*nkc 10

SSIS

A Data Flow Task,在SSIS包内移动数据的主要任务,与源提供程序的元数据紧密绑定.如果一个源具有string,int,string,并且next具有字符串,字符串,字符串,字符串,则对于同一数据流中的该工作,元数据将变得太不同.虽然您可以将整数数据强制转换为字符串,但无法克服列数的差异.

在您的情况下,除非您将非常复杂的业务逻辑应用于来自这些电子表格的数据到统一表中,否则我可能会设计N + 1个包.您将收到的每种可能的Excel格式的包.我假设有一些逻辑可以确定文件来自哪个模板(ClientAV1.xlsx,ClientBV2.xlsx等).这些包将具有Excel源到OLE DB目标的数据流.最终的包将是父/控制器/主包.它将根据可用文件处理其他包的协调.

C#

既然你已经标记了asp.net,我认为你也可以使用.NET方法.在这个答案中,我介绍了如何在.NET中读取Excel文件,当我将其提供给SSIS数据流时,没有什么能阻止您发出批量命令将数据加载到SQL Server中.