2012-08-29 12 views
9

Bir DataTable üzerinden geçen 'WriteToServer' yöntemini çağırabileceğiniz C# SqlBulkCopy sınıfını tanıyorum.SqlBulkCopy Work

Sorgum SQL Server'daki temel mekanizma, bu verileri toplu olarak eklemek için ne kullanılır?

Sormamın nedeni, Bulk Insert MSDN T-SQL yardım dosyasında başvurulan toplu ekin içe aktarılacak bir veri dosyası gerektirmesidir. SqlBulkCopy bir veri dosyası oluşturur mu?

SQL'de yığın ekleme işlevini kullanıp kullanamayacağımı anlamak için bu şeyleri anlamak isterim.

Tüm satırları belirli bir tabloya (binlerce satır) eklemek üzere hazırlayan bir SQL deyimi yazarsam bunları hedef tablonun içine ekleyebilir miyim? Böyle bir şey ben şimdi

INSERT INTO sync_filters (table_name, device_id, road_id, contract_id) 
    SELECT * FROM dbo.sync_contract_filters (@device_id) 

yapıyorum Ve dbo.sync_contract_filters eklemek için tüm satırları oluşturmak için bir işlevdir nasıl. Bu toplu eklenebilir mi?

cevap

8

SqlBulkCopy bir veri dosyası oluşturmuyor. Veri tablosunu doğrudan .Net DataTable nesnesinden mevcut iletişim protokolünü (Adlandırılmış Borular, TCP/IP, vs ...) kullanarak sunucuya aktarır ve BCP tarafından kullanılan aynı tekniği kullanarak verileri hedef tabloya toplu olarak yerleştirir. .

+0

Eklemek istediğim şey, belirli bir tablo için gereken satırları oluşturacak bir SQL ifadesi oluşturabilir ve sonra bunları toplu olarak ekleyebilirsiniz (bu tamamen SQL kullanıyor). BCP bunu örneğin yapabilir mi? Bcp'nin tabloları da kullandığı izleniminin altındaydım. – peter

2

SqlBulkCopy veri kaynağı olarak bir datatable, IDataReader veya DataRow [] kullanabilir. Sınıfın WriteToServer yöntemlerine bir göz atın. SQL Server'a veri almanın oldukça kullanışlı bir mekanizmasını buldum. Bunu daha önce CSVReader ile birlikte kullanmıştım. Önceki bağlantı, IDataReader'ı uygulayan bir sınıfla nasıl çalıştığı hakkında bir fikir verir.

Beklediğiniz performansı aldığınızdan emin olmak için play around with the batch sizes'a ihtiyacınız olabilir. Büyük miktarda veriyi hızlı bir şekilde yazmaktan en iyi performansı elde etmek istiyorsanız, MSDN 'de

The Data Loading Performance Guide oldukça yararlı bir kaynaktır. Bu BCP ve BULK INSERT gibi şeyler üzerinde daha fazla odaklanır, ancak SQLBulkCopy dokunur ve aynı zamanda düşünce için oldukça fazla gıda sağlar (belki biraz fazla, ama en azından yine de yararlı bir referanstır).

İlgili konular