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

时间:2012-05-02 04:28:18

标签: sql-server excel oledb

我非常关注此MSDN页面上的示例:

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

有1个例外。而不是像

这样的简单查询
"Select * FROM [Sheet1$]"

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

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

但是我收到一条无用的异常消息“IErrorInfo.GetDescription因E_FAIL(0x80004005)而失败。”

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

1 个答案:

答案 0 :(得分:7)

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

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

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