将Excel电子表格导入SQL - 仅更新当前电子表格中的最新数据

时间:2015-06-02 13:57:05

标签: sql-server excel

我想知道SQL中是否存在功能以实现以下目的:

我有一个Excel电子表格,用户可以使用以下信息更新DAILY:

工作簿,类型,帐户参考,公司名称,预订类型,客户类型,工作类型,产品代码,约会价值,

Jan KPI.xlsx,Sales,SA1326,company1,Questionnaire,Current,Ad Hoc,Q1,£18.00

Jan KPI.xlsx,Sales,SA1327,company 2,Home visit,Current,Ad Hoc,MR7,£325.00

Jan KPI.xlsx,Sales,SA1328,company 2,home visit,Current,Ad Hoc,MR6,£0.00

使用定义工作表名称的第一列(并且每个月都会更改)我想将此信息导入表格,覆盖当前电子表格中的所有现有数据,但保留以前上传的任何其他电子表格中的任何内容。< / p>

最终结果是我们持有并可以报告所有历史数据,同时也能够查看当前的工作。

我理解导入可以使用SSIS完成,但我没有使用SQL的那一部分。

感谢。

2 个答案:

答案 0 :(得分:0)

也许您想尝试我开发的工具?它是一个Excel加载项,用于将用户的Excel数据导出到SQL Server中的表。其目的是从最终用户收集数据。

有一项功能可以创建一个用户可以选择数据的过滤器。您可以使用月份创建过滤器,并使用该过滤器让用户仅使用当前月份。当您继续下个月时,上个月的数据将存档在表格中。

如果你想尝试一下,我可以给你免费的许可证来测试你的情况。如果您有兴趣测试一下,请给我发电子邮件:)

www.sqlpreads.com

答案 1 :(得分:0)

所以最后我使用了SSIS包,并不像我预期的那样难以创建。这是一个很棒的视频,解释了如何设置一个excel导入,允许你选择一个重命名的excel(即名称每月更改或上面有日期戳等)或者选择多个文件:

https://www.youtube.com/watch?v=_B83CPqX-N4

然后是使用简单的删除命令将电子表格导入临时表的情况,该命令将临时表的工作簿列与目标表中的工作簿列进行比较,并删除任何匹配的内容,然后只导入temp表进入决赛桌并清理临时表。

对我来说,重要的部分是我没有每行的唯一关键字段,只有一个列来自它所来自的电子表格,并且不确定如何最好地继续。上述方法可以实现我想要的方式,只要电子表格保持正确命名,我的用户就可以添加或编辑任何月份的数据,而不仅仅是最新的数据。