使用 odbc excel 驱动程序转换数据类型
Posted
技术标签:
【中文标题】使用 odbc excel 驱动程序转换数据类型【英文标题】:Cast a data type with the odbc excel driver 【发布时间】:2011-06-21 11:42:20 【问题描述】:我正在使用 Microsoft Excel 驱动程序将 Excel 文档导入 adodb.recordset,以便我可以删除重复的行并将其放入 SQL Server 数据库中。
第一列具有 192、13U、JJJ 等值,但由于某种原因,查询将其转换为双精度值,并且任何具有 alpha 值的行都将转换为 Null。据我所知,这是因为多数类型是数字而不是文本。
我尝试投射它,但出现错误。
这是我的功能:
Function Read_Excel(ByVal sFile As String) As ADODB.Recordset
On Error GoTo fix_err
Dim rs As ADODB.Recordset
rs = New ADODB.Recordset
Dim sconn As String
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic
sconn = "DRIVER=Microsoft Excel Driver (*.xls); ImportMixedTypes=Text; " & "DBQ=" & sFile & ";Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
rs.Open("SELECT Code, Description FROM [sheet1$]", sconn)
tot += rs.RecordCount
rs.Close()
rs.Open("SELECT Distinct * FROM [sheet1$]", sconn)
Read_Excel = rs
rs = Nothing
Exit Function
fix_err:
Debug.Print(Err.Description + " " + _
Err.Source, vbCritical, "Import")
Err.Clear()
End Function
有没有办法轻松地将第一列作为文本获取?
编辑:当我尝试"SELECT cast(RPOCode as varchar(10)), Description FROM [sheet1$]"
时出现此错误
“[Microsoft][ODBC Excel 驱动程序] 查询表达式 'cast(Code as varchar)' 中的语法错误(缺少运算符)。用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序”
我尝试了 varchar、varchar(10) 和 text 作为转换类型,结果相同。
【问题讨论】:
WHAT 你遇到了什么错误?!?!我们不是读心者 - 你需要让我们知道! "[Microsoft][ODBC Excel Driver] 查询表达式'cast(Code as varchar)'中的语法错误(缺少运算符)。Microsoft OLE DB Provider for ODBC Drivers" 我试过 varchar 和 text作为铸造类型。 【参考方案1】:我最终尝试了 ACE 连接字符串,而不是 Microsoft Excel 驱动程序的连接字符串。
sconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFile & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"";"
并确保 IMEX=1 部分在其中。我认为 Microsoft Excel 驱动程序没有正确使用扩展属性。
【讨论】:
【参考方案2】:试试:
rs.Open("SELECT CStr([Code]), Description FROM [sheet1$]", sconn)
Cast 在 Jet/ACE SQL 中不可用。
【讨论】:
这消除了错误,但我只是得到一个空字符串而不是 Null,就像它将 Null 转换为字符串一样。 关于 ACE 的那部分帮助我弄清楚了。我记得在connectionstrings.com/excel 上看到过,但没想过要尝试。以上是关于使用 odbc excel 驱动程序转换数据类型的主要内容,如果未能解决你的问题,请参考以下文章
通用Excel设置MySQL外部数据源时提示:“ODBC驱动程序管理器未发现数据源名称并且未指定默认驱动程序”
配置ODBC DSN数据源,导出数据库数据到Excel过程记录