- 现在想将文件夹中的多个Excel文件批量导入数据库中,且放在同一张表中
- 工具:SQL Server数据库,Microsoft SQL Management Studio(SSMS),Microsoft Visual Studio(SSDT)
- 注意:要求所有的excel文件sheet名,字段名一致
首先,在数据库中新建一张表,字段名与excel文件中的字段一致
USE [Kingfisher_test]
GO
/****** Object: Table [dbo].[SAP_Sales_GM_Stock] Script Date: 2020/3/20 13:49:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SAP_Sales](
[Year and Month] [nvarchar](255) NULL,
[Office] [nvarchar](255) NULL,
[Leading Category] [nvarchar](255) NULL,
[Category Name] [nvarchar](255) NULL,
[Vendor Name] [nvarchar](255) NULL,
[Sales Value] [float] NULL,
[Gross Margin] [float] NULL,
[Net Margin] [float] NULL,
[Sales Quantity] [float] NULL,
[DC Quantity] [float] NULL,
[DC Value] [float] NULL,
[Store Quantity] [float] NULL,
[Store Value] [float] NULL
) ON [PRIMARY]
GO
打开SSDT工具,新建一个SSIS项目~
在包中,拖入"执行SQL任务",双击打开
在常规中的"Connection"连接上数据库,在"SQLStatement"中写入需要执行的SQL语句,这里的目的是清空数据库中该表的所有数据,点击确定
拖入Foreach循环容器,与执行SQL任务关联上,双击打开循环容器
在常规中可以改循环容器的名称
在集合中选择"Foreach文件枚举器"
文件夹中选择存放excel文件夹路径
变量映射中新建变量
写入变量的名称,值中写存放excel的文件夹路径,确定
将数据流拖入循环容器中,双击进入数据流
在数据流中拖入"Excel 源"和"OLE DB 目标"
双击"Excel 源",在连接管理器中新建Excel 连接管理器,输入文件夹中任意一个excel的路径,确定
双击"OLE DB 目标",选择数据库和新建的表
查看映射看字段是否一一对应上,确定
右击下方的Excel 连接管理器,选择属性,在属性窗口选择"Expressions",进入属性表达式编辑器
属性选择"ExcelFilePath",点击表达式进入表达式生成器
将之前新建的变量拖入下面的表达式框中,确定
页面上会显示报错,此时在数据流页面中任意空白地方右击选择属性
将"DelayValidation"改为True
此时程序就编辑完毕,点击启动
文件开始上传
若文件过多,数据量较大可能需要上传一段时间
感谢阅读!!!