2011-02-08 24 views
11

Verileri okumak için aşağıdaki sql'i kullanacağım, ancak bazen ilk birkaç satırı atlaman gerek. örn. gerçek veriler 5. satırdan başlar, bu yüzden ilk 4 satırı atlamanız gerekir, bu yapılabilir mi?openrowset: birkaç satır atlayabilir miyiz?

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

cevap

5

Bu (şans bu ki gibi) belirli bir düzene, satırlar elde edilen sayı olacaktır: Eğer değiştirerek, uygun gördükleri takdirde

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; 

Sen, bazı sırasını belirtmek isteyebilir böyle rownum tanımı:

ROW_NUMBER() OVER (ORDER BY specific_column_list) AS rownum 
+0

. Ve sql sunucusunun verileri paralel olarak yükleyip yükleyemeyeceğinden emin değilim, eğer rownum dosyadaki pozisyonu refleks edemiyorsa, örneğin ilk 100 satırın 1. sırasını yüklerse, 2. iplik ikinci 100 satırı yüklerse, o zaman mümkün İkinci 100 satır, ilk olarak –

+0

@Daniel Wu veritabanına yüklendi: Peki elimizde ne var? Sipariş edilen bir ROW_NUMBER ile işlemin yavaşlaması çok olasıdır, evet. Sıralanmamış olanın, satır numaralarını excel sayfasındaki gerçek sıra sırasından farklı şekilde ataması çok olasıdır. Ve bu yüzden cevabım bu durumda neredeyse tamamen çöpe atıyor. Üzgünüm, şu an için seçeneklerim tükendi gibi görünüyor. Sadece bu ise: Orijinal excel belgesindeki satırları numaralandırır mısınız? Yani, gerçek satır numaralarını gösteren değerlere sahip bir sütun ekleyin, böylece SQL'de filtreleyebilirsiniz. –

16

kullanımı bir dizi [sheet1 $ A5: Z] tamamı yerine tabakanın [Sheet1 $]

_numarası() yapmak için ETL işlemini yavaşlatacak olan 210
SELECT * 
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls', 
    'SELECT * FROM [sheet1$A5:Z]' 
); 
+0

Bu, toplam satır sayısının her seferinde değişeceği son beş satırı hariç tutmak için yapılabilir mi? Excel elektronik tablomda, son sonuç satırından sonra her zaman bir satır başlayan ve beş satır için giden altbilgi metni vardır. Ancak satır sayısı her zaman farklı olacaktır. Şu anda altbilgi metnini içe aktarmaya çalışırsanız içe aktarma, veri türlerine vb. – TravisPUK

İlgili konular