Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL中的OpenRowSet命令返回空值_Tsql_Excel_Import From Excel_Openrowset - Fatal编程技术网

TSQL中的OpenRowSet命令返回空值

TSQL中的OpenRowSet命令返回空值,tsql,excel,import-from-excel,openrowset,Tsql,Excel,Import From Excel,Openrowset,我已经调查了一段时间了,一直在碰壁。我正在通过OpenRowset命令将xls文件导入临时表。现在我遇到了一个问题,我试图导入某个列,该列有一个范围值,但最常见的是以下列。列结构为长数字,即15598,而某些列结构为字符串,即15598-e 现在openrowset读取字符串版本没有问题,但是将数字版本报告为空。我读到()openrowset有这个问题,作者谈到在查询字符串中实现“HDR=YES;IMEX=1”,但这对我根本不起作用 你们当中有人遇到过这种情况吗 还有更多的信息。我可能无法使用J

我已经调查了一段时间了,一直在碰壁。我正在通过OpenRowset命令将xls文件导入临时表。现在我遇到了一个问题,我试图导入某个列,该列有一个范围值,但最常见的是以下列。列结构为长数字,即15598,而某些列结构为字符串,即15598-e

现在openrowset读取字符串版本没有问题,但是将数字版本报告为空。我读到()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$]')

我们遇到了同样的问题。不幸的是,我们也没有找到解决办法。有更多信息表明可能存在注册表修复。

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

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$]')
编辑:对不起,刚刚注意到你的最后一段。当然Excel ODBC驱动程序仍然通过JET引擎运行,那么它会有什么不同呢


编辑:我查看了KB194124链接,它建议的注册表值是我机器上的默认值,我从未更改过。我自己已经多次使用上述方法,没有任何问题。可能是环境问题?

如果您不介意在Excel中打开该文件,请选择有问题的列,选择该列,然后执行以下操作

数据->文本到列->下一步->下一步->文本

保存电子表格,它们应全部以文本形式出现在OPENROWSET中


我发现使用.CSV文件而不是Excel,通过设置链接服务器打开,并在schema.ini中设置文件的格式,这是处理此类导入的更实际的方法,使用这种方法,您可以显式选择每列的格式。

我也有同样的问题。我修复了剪切和粘贴一行的问题,该行在工作表的第一行位置包含一列字符串/数值(例如123ABC)。出于某种原因,T-SQL读取第一行并假设所有值都是数字。

SqlACID在该链接中的响应非常有效[:-


如果您不介意在Excel中打开该文件,请选择有问题的列,选择该列,然后执行以下操作

数据->文本到列->下一步->下一步->文本

保存电子表格,它们应全部以文本形式出现在OPENROWSET中


我发现使用.CSV文件而不是Excel,通过设置链接服务器打开,并在schema.ini中设置文件的格式,这是一种更实用的处理此类导入的方法,使用这种方法,您可以显式选择每列的格式。

没问题,请查看更多信息+1。发布一年后,问题得到解决我也有同样的问题。现在你知道为什么ETL的人讨厌Excel的导入了!