通过opendataSource(OpenRowset)在SQL中阅读Excel:行订单?

问题描述 投票:0回答:1

I有一个T-SQL代码(SQL Server 2012),该代码必须读取excel文件到临时表中。 我使用opendatasource这样做:

INSERT INTO #MyTable (id, F1)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS id, F1
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.16.0','Data Source=FilePathMustBeHere;
                     Extended Properties="EXCEL 12.0;HDR=No;IMEX=1"')...['SheetNameMustBeHere$']
我的问题是:我可以100% - 确定#mytable.id值将与Excel文件中相应行的物理顺序相对应吗? 如果需要,我可以使用Openrowset而不是OpenDataSource。但是Excel文件肯定没有可以用我需要的顺序对读取行进行排序的列。我需要以与excel文件中的物理行相同的方式订购#mytable.id值。

short答案:否

为了确保数据以相同的顺序为单位,您需要订购的东西实际上表示数据顺序。
sql sql-server excel t-sql openrowset
1个回答
0
投票
返回一个常数,因此在这种情况下,您获得的订购将是任意的,因此无法保证您的表达式订购将是电子表格中数据的相同顺序。根据列定义订单。别忘了,这可能是列的组合。例如,可以接受。 因此,您需要在电子表格中的一列中表示该顺序。如果您没有表示该顺序的列,则暗示了两件事之一:


订单并不重要,因此任意命令很好(也许您应该使用

ROW_NUMBER

?),或者,,
电子表格有缺陷,并且它具有表示顺序的东西。首先修复电子表格,然后您可以
ORDER BY ClientID, ContactDate
所需的列。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.