Tôi sẽ sử dụng sql sau để đọc dữ liệu từ excel, nhưng đôi khi tôi cần phải bỏ qua một vài hàng đầu tiên. ví dụ: dữ liệu thực bắt đầu từ dòng 5, vì vậy tôi cần bỏ qua 4 hàng đầu tiên, có thể thực hiện được không?openrowset cho excel: chúng ta có thể bỏ qua một vài hàng không?
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
'SELECT * FROM [sheet1$]');
sẽ làm chậm quá trình ETL để thực hiện row_number(). Và tôi không chắc liệu máy chủ sql có thể tải dữ liệu song song hay không, nếu như vậy, sự rownum không thể phản xạ vị trí trong tệp, chẳng hạn như chuỗi 1 tải 100 hàng đầu tiên, luồng 2 tải 100 hàng thứ hai, thì có thể 100 hàng thứ hai được nạp đầu tiên vào cơ sở dữ liệu –
@Daniel Wu: Vậy chúng ta có gì? Với ROW_NUMBER có thứ tự, quá trình này rất có khả năng làm chậm, có. Và thứ không có thứ tự là rất có khả năng gán các số hàng khác với thứ tự thực tế của các hàng trong bảng excel. Và vì vậy câu trả lời của tôi trở nên gần như hoàn toàn rác rưởi trong tình huống này. Xin lỗi, có vẻ như tôi đã hết các lựa chọn cho bạn trong thời gian này. Nếu chỉ có điều này: bạn có thể đánh số các hàng trong tài liệu gốc excel không? Tức là, thêm một cột với các giá trị đại diện cho các số hàng thực tế, vì vậy bạn có thể lọc nó trong SQL. –