2010-06-24 24 views
5

Excel'den OLEDB SQL'e veri dönüşümü yapmak için SSIS kullanıyorum. Bir klasörde, bu sayfaların her birindeki verileri bir tabloya eklemek ve eklemek zorunda kalacağım bir klasör kümesi var. Farklı sütun yapılarına sahip bir dizi Excel sayfası aracılığıyla dönmem gereken bir senaryo var. Foreach döngü numaralandırıcı aracılığıyla her bir sayfa aracılığıyla döngü yapabilirim ve dosya adını bulmak ve Excel kaynağına iletebilirsiniz.SSIS - dinamik sütun eşleştirmeleri

Durum sütununda OLEDB SQL tablosu olacak olan hedef eşlemede bu sütun eşlemlerinden kurtulmanın bir yolu olup olmadığını bilmek istiyorum. Çünkü bu eşlemeler her dosya için farklıdır. Bunu dinamik olarak yapmanın bir yolu var mı?

cevap

5

Eşlemeleri değiştirmek için döngü içinde bir komut dosyası görevi eklerken, her eşlemeyi açık olarak kodda oluşturmanız gerektiğinden, yapmanız en kolay şey değildir. Daha basit bir çözüm, excel sayfalarını ayrılmış metin dosyaları ile değiştirmek ve bunları Toplu Ekle Görevini kullanarak döngü içinde içe aktarmak olacaktır. Sütun düzeninin hem dosyalarda hem de tablolarda aynı olması koşuluyla, herhangi bir eşleme bilgisi sağlamanız gerekmez.

Bunu yapamazsanız, eşleme meta verilerini bir yerde saklayabilirsiniz, örn. Veritabanınızdaki bir tablo ve bunu bir Komut Dosyası görevinde dinamik eşleştirmeler oluşturmak için kullanın.

SqlBulkCopy nesnesini yapılandırmak için meta verileri kullanan tek bir komut dosyası görevi kullanmak biraz daha kolay bir yoldur. Tam bir Veri Akışı görevinin esnekliğini kaybedersiniz, ancak tek istediğiniz şey geçici konuşmalarda bazı dosyaları yüklemekse, yeterince iyidir. Ayrıca, bir SqlBulkCopy nesnesini Veri Akışı görevinden yapılandırmak çok daha kolaydır.

+0

Bir SQLBulkcopy nesnesini yapılandırmak için komut dosyası görevini nasıl kullanırım? kullanabileceğim bir bağlantı var mı? biraz daha brifere olabilir misiniz ... çok aptal olduğun için üzgünüm – Baaju

+3

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopycolumnmapping.aspx adresindeki SqlBulkCopyColumnMapping sınıfının belgelerini deneyin. özel eşlemeleri kullanan bir örnek için. Bir kaynak okuyucu (excel için OleDbDataReader), hedef bağlantı ve kaynak ve hedef sütunlarının isimlerini kullanarak SqlBulkCopy nesnesinin ColumnMappings özelliğini doldurmak kadar basittir. ColumnMappings listesini boş bırakabilirsiniz, bu durumda sütunları sıralı konumlarına göre eşler - Toplu Ekle Görevinin yaptığı gibi. –