openrowset for excel: can we skip several rows?

前端 未结 2 610
醉话见心
醉话见心 2020-12-19 00:46

I will use the following sql to read data from excel, but sometimes I need to skip first several rows. e.g the real data begins from line 5, so I need to skip the first 4 ro

相关标签:
2条回答
  • 2020-12-19 01:12

    This will number the rows being obtained, with no specific order (as luck would have it):

    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;
    

    You may want to specify some order, if you see fit, by changing the rownum definition like this:

    ROW_NUMBER() OVER (ORDER BY specific_column_list) AS rownum
    
    0 讨论(0)
  • 2020-12-19 01:22

    Use a range [sheet1$A5:Z] instead of the entire sheet [sheet1$]

    SELECT *
    FROM OPENROWSET(
        'Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
        'SELECT * FROM [sheet1$A5:Z]'
    );
    
    0 讨论(0)
提交回复
热议问题