13

我将使用以下 sql 从 excel 中读取数据,但有时我需要跳过前几行。例如,真实数据从第 5 行开始,所以我需要跳过前 4 行,这可行吗?

 SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]');
4

2 回答 2

19

使用范围 [sheet1$A5:Z] 而不是整个工作表 [sheet1$]

SELECT *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$A5:Z]'
);
于 2012-01-17T23:19:12.653 回答
5

这将对获得的行进行编号,没有特定的顺序(幸运的是):

SELECT *
FROM (
  SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownum
  FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]')
) s
WHERE rownum > 4;

如果您认为合适,您可能希望通过更改如下rownum定义来指定一些顺序:

ROW_NUMBER() OVER (ORDER BY specific_column_list) AS rownum
于 2011-02-08T07:25:24.667 回答