Ответ 1
Используйте диапазон [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]'
);
Я буду использовать следующий 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$]');
Используйте диапазон [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]'
);
Это будет указывать получаемые строки без определенного порядка (как повезло бы):
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