由于您的源列不断更改,您需要编写自定义脚本,您可以根据源上发生的更改来放置逻辑。
脚本逻辑应该是,获取excel文件,读取列标题然后推断出如何处理excel。然后,您可以将此excel重定向到适当的组件。
我能想到的唯一方法是使用脚本组件。基本上,您需要做的是:
- 将Excel文件数据读入DataTable;见:Reading Excel files from C#
- 创建一个列表,其中包含从Excel文件中读入的所有列名。我们将使用它来比较目标SQL表的字段名称。
- 创建一个包含目标SQL表的所有列名的列表。
- 将您的列表与一些模糊匹配逻辑进行比较,以查看Excel文件和SQL表之间的列名是否相同。您可以使用的算法将取决于变量Levenshtein如何成为这样做的好方法:http://www.dotnetperls.com/levenshtein
- 根据您在上面步骤4中的比较,动态构建SQL查询以编写新Excel列的所有ALTER TABLE / ADD COLUMN语句。
- 将上述步骤1中的DataTable加载到SQL表中,使用SQLBulkCopy的ColumnMapping类映射步骤4中的模糊匹配列名。http://msdn.microsoft.com/en-us/library/System.Data.SqlClient.SqlBulkCopyColumnMapping(v=vs.110).aspx
醇>