TSQL中的OpenRowSet命令返回NULLS

Ste*_*McD 6 t-sql excel import-from-excel openrowset

现在正在调查一段时间并继续撞砖墙.我通过OpenRowset命令从xls文件导入临时表.现在我有一个问题,我试图导入某个列有一个范围值,但最常见的是以下.列结构为长数字,即15598,一些列为字符串,即15598-E.

现在openrowset正在读取字符串版本没有问题,但是将数字版本报告为NULL.我读(http://www.sqldts.com/254.aspx)是OPENROWSET有问题,笔者谈到实施"HDR = YES; IMEX = 1"进入查询字符串,但是,这不是为我工作的.

有没有人遇到过这个?

还有一些信息.我可能不会使用JET引擎(Microsoft.Jet.OLEDB.4.0)这样做,所以这是我的查询:

SELECT *
FROM 
    OPENROWSET('MSDASQL'
                , 'Driver=Microsoft Excel Driver (*.xls);HDR=YES;IMEX=1;DBQ=C:\ImportFile.xls;'
            , 'SELECT * FROM [Sheet1$]')
Run Code Online (Sandbox Code Playgroud)

Chr*_*ter 6

我注意到您正在使用Excel ODBC驱动程序.您是否尝试过使用等效连接字符串的JET OLEDB Provider?

select * from openrowset(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source=C:\ImportFile.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"',
    'SELECT * FROM [Sheet1$]')
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,刚刚注意到你的最后一段.当然Excel ODBC驱动程序仍然通过JET引擎,所以它有什么区别?

编辑:我看过KB194124链接,它推荐的注册表值是我的机器上的默认值,我从来没有改变过.我自己多次使用上述方法没有问题.也许这是一个环境问题?