如何从Excel工作表定期更新SQL Server表

问题描述

对于我的.NET应用程序,我有一个Excel文件用作数据源。该Excel文件每小时更新一次。我当前的后端数据库技术是MS Access。 Access文件具有指向上述Excel文件链接表。我想将后端切换到sql Server。

我的问题是如何在sql Server中创建一个链接表,这样我的sql Server数据库中便始终具有当前数据。现在,我已经设法通过sql Server Mgmt中的导入向导导入Excel工作表。工作室。但这显然是静态的(不是像excel表格那样每小时更新一次)。

我可以创建一种每小时运行一次,读取Excel工作表并导入到我的sql Server数据库的过程吗?我将如何去做?或任何其他方法,只要我的sql Server中的表每小时使用Excel工作表中的数据进行更新即可。

解决方法

一个,不要编码从excel文件中读取“正在进行中”的代码。那是一场灾难,等待发生。某些用户打开文件,将其锁定,然后您的sql-server开始失败。 :)这是一个糟糕的情况。

您应该创建一个ETL包来运行(每小时)吗?

https://docs.microsoft.com/en-us/sql/integration-services/ssis-how-to-create-an-etl-package?view=sql-server-ver15

什么是SQL Server集成服务(SSIS)? MicrosoftSQL Server

集成服务(SSIS)是用于构建的平台 高性能数据集成解决方案,包括提取, 数据仓库的转换和加载(ETL)软件包。 SSIS 包括用于构建和调试的图形工具和向导 包装;执行工作流功能(如FTP)的任务 操作,执行SQL语句和发送电子邮件; 提取和加载数据的数据源和目的地; 清理,汇总,合并和复制数据的转换; 一个管理数据库SSISDB,用于管理程序包的执行和 存储;和用于编程的应用程序编程接口(API) Integration Services对象模型。

用于提取和加载数据的数据源和目的地;

部署和安排:

https://www.mssqltips.com/sqlservertutorial/9069/deploy-and-schedule-an-sql-server-integration-services-ssis-package-step-by-step/

使用SQL Server代理计划SSIS程序包 手动执行软件包是一回事,但是通常您会安排软件包,以便您的ETL可以在特定的时间窗口内运行 (大概是晚上)。最简单的选项是SQL Server代理。您可以 右键单击“作业”节点以创建一个新作业:

enter image description here