Userò il seguente sql per leggere i dati da Excel, ma a volte ho bisogno di saltare prima diverse righe. ad esempio, i dati reali iniziano dalla riga 5, quindi ho bisogno di saltare le prime 4 righe, è fattibile?openrowset per Excel: possiamo saltare più righe?
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
'SELECT * FROM [sheet1$]');
che rallenterà il processo ETL per eseguire row_number(). E non sono sicuro che il server sql possa caricare i dati in parallelo, in tal caso il rownum non può riflettere la posizione nel file, ad esempio thread 1 carica le prime 100 righe, thread 2 carica le seconde 100 righe, quindi è possibile le seconde 100 righe sono state caricate prima nel database –
@Daniel Wu: Allora, cosa abbiamo? Con un ROW_NUMBER ordinato, è molto probabile che il processo rallenti, sì. E quello non ordinato è molto probabile che assegni i numeri di riga in modo diverso dall'ordine effettivo delle righe nel foglio excel. E così la mia risposta diventa quasi completamente spazzatura in questa situazione. Scusa, sembra che per il momento non abbia più opzioni per te. Se solo questo: potresti eventualmente numerare le righe nel documento excel originale? Cioè, aggiungi una colonna con valori che rappresentano i numeri di riga effettivi, in modo da poterli filtrare in SQL. –