2017-04-19 107 views
1

我有超过50个Excel文件,我想将它们中的每一个导入到SQl服务器中的新SQL表中,该表的名称是Excel的名称文件 我怎样才能实现使用SSIS?使用SSIS将每个Excel文件导入新的SQL表

每个文件都有自己的列名。所以我需要一种方法来循环在文件夹中的每个文件,并获得每个文件的数据到新的SQL表

+1

这可能会帮助你:https://www.codeproject.com/Articles/368530/Dynamic-Excel-file-loading-with-SSIS –

+0

这很有趣,但这不是我要找的 – LattaliAhmed

+0

这可能会成为BIML的一份工作,具体取决于学习BIML是否更快,或者更快地通过手工创建每个数据流。 –

回答

1

这只是给你一个大致的想法可以做什么。

导入之前,在SQL Server中创建一个临时表

CREATE TABLE dbo.ExcelStaging 
(LineId INT NOT NULL IDENTITY(1,1) 
, FileLine VARCHAR(2000) 
, FileName VARCHAR(50) 
) 

截断临时表中每个文件。

创建脚本任务,读取您的文件的每一行,并插入到登台表格“FileLine”中。 LineId = 1应始终保存原始文件列标题。你必须小心选择哪个分隔符,逗号分隔符或固定宽度?

一旦文件加载到表中,执行SQL任务 - 一个存储过程

一个。基于LineID = 1的文件名和FileLine,创建一个新的SQL表。新表可能看起来很丑 - 每个列数据类型都是varcher,因为不知道每个字段的数据类型是什么。

b。插入到新表中选择FileLine的子字符串作为临时表中的列。这里你选择的分隔符将决定你如何为每一列进行子串处理。

+0

不错的想法,但我需要保持列数据类型与Excel相同 – LattaliAhmed

+0

好的,您需要在导入文件之前创建表。通过读取文件名和第一行文件内容,您或计算机如何确定哪些数据类型? – Wendy

+0

SQL服务器中的导入/导出向导可以做到这一点,我的目标是在SSIS中做同样的事情,而无需手动创建每个表。 – LattaliAhmed

相关问题