我正在努力将数百行(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行,我将其最小化正弦信息只是为了我的后端需要。
答案 0 :(得分:3)
您可以将Excel数据源的OpenRowset
属性(属性窗口,自定义属性部分中的OpenRowset)设置为类似于Sheet1$a6:j
的值,其中a
是您数据的第一列,{ {1}}是包含数据的最后一列,j
通常是在数据之前的带标题的行。数据应从下一行开始。您还可以通过设置与6
类似的值来设置要读取的最后一行
请注意,第一个给定的行有时被视为标题行,有时被视为带有数据的第一行。例如excel:
当我将Sheet1$a6:j20
设置为OpenRowset
时,第三行被视为标题行:
但是当我将Sheet1$a3:j
设置为OpenRowset
时,此行将被视为第一个数据行:
奇怪。
答案 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。