在查询中使用子string函数将数据从Excel导入SQL服务器

我非常关注这个MSDN页面上的例子:

http://code.msdn.microsoft.com/Imoprt-Data-from-Excel-to-705ecfcd

有一个例外。 而不是一个简单的查询

"Select * FROM [Sheet1$]" 

我想做一些更复杂的事情,比如:

 "Select *, SUBSTRING(COLUMN_A, 1, 5) as STRIPPED_COL_A FROM [Sheet1$]" 

但我得到一个无用的exception消息“IErrorInfo.GetDescription失败,E_FAIL(0x80004005)”。

如果我不得不猜测,问题是由于在Excel或OleDB中使用了不受支持的SUBSTRING函数。 那么如何解决这个问题。

在他们的例子中,您正在使用Microsoft.ACE.OLEDB驱动程序通过Provider=Microsoft.ACE.OLEDB.12.0Provider=Microsoft.Jet.OLEDB.4.0加载Excel工作表,因此您将不得不使用查询格式和MS Access中可用的function。

 Select *, MID(Column_A, <<start>>, <<length>>) as STRIPPED_COL_A from [Sheet1$] 

请记住其他特性,如<<start>>不是零索引,而是从1开始,这是string中的第一个字符。