SSIS Excel到SQL导入 - 该文件的前6行包含与标题相关的信息

时间:2012-09-13 22:43:32

标签: sql sql-server excel ssis bids

我正在努力将数百行(120K)的数据从excel文件导入SQL Server。现在我正在尝试使用SSIS来完成这个但是我立即遇到了一些问题,考虑到excel文件构建的excel模板似乎不包含第一行中的Header(关于前6行包含头信息) 。如何使用BIDS中的SSIS数据流任务来解决此问题以处理导入?或者通过直接读取Excel文档中的每一行来读取这些行会更好吗?

我认为其他有用的信息是

a)我试图找到一种替代方法,从Windows客户端应用程序读取每个excel行,然后逐行将数据写入数据库

b)我的excel文档中有大约4个excel工作表

c)如果有一种方法可以从excel逐行读取并有效地完成,而不是使用我不熟悉的Windows客户端的SSIS。我将很感激有关如何

的任何建议

d)我的excel文档的特定标题位于第7行,我将其最小化正弦信息只是为了我的后端需要。

2 个答案:

答案 0 :(得分:3)

您可以将Excel数据源的OpenRowset属性(属性窗口,自定义属性部分中的OpenRowset)设置为类似于Sheet1$a6:j的值,其中a是您数据的第一列,{ {1}}是包含数据的最后一列,j通常是在数据之前的带标题的行。数据应从下一行开始。您还可以通过设置与6类似的值来设置要读取的最后一行 请注意,第一个给定的行有时被视为标题行,有时被视为带有数据的第一行。例如excel:
excel data
当我将Sheet1$a6:j20设置为OpenRowset时,第三行被视为标题行:
data previev 1
但是当我将Sheet1$a3:j设置为OpenRowset时,此行将被视为第一个数据行:
data preview 2
奇怪。

答案 1 :(得分:0)

试试这个,

而不是使用SSIS你可以在sql server中使用OPENROWSET函数,下面的查询一步一步执行,因为在使用OPENROWSET函数之前我们需要在sql server中设置所有必需的选项,

--execute step by step to process excel data into sqlserver using OPENROWSET/OPENDATASOURCE
sp_configure
sp_configure 'show advanced options',1
reconfigure
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
SELECT * INTO XLImport8 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\StatusReport.xls', 'SELECT * FROM [Sheet1$]')
select * from XLImport8 

谢谢,

Venkat。