BCP API'sini kullanarak verileri ambarınıza alma (Önizleme)

Şunlara uygulanır:✅ Warehouse in Microsoft Fabric

BCP API, dosyaları harici depolamada aşamalandırmadan verileri Warehouse'a yüklemek için doğrudan, istemci taraflı bir veri alım yolu sağlar.

Important

Bu özellik önizleme aşamasındadır.

BCP aracı (bcp yardımcı programı),.NET SqlBulkCopy sınıfı ve Java SQLServerBulkCopy sınıfı, SQL Server, Azure SQL ve Azure Synapse ayrılmış SQL havuzu iş yükleri arasında kullanılan alım yöntemleri oluşturulur. Bu arabirimler BCP API'sini ve TDS toplu yükleme protokolünü kullanır. Bu protokol genellikle yüksek hacimli alım için satır satır INSERT ifadelerinden daha verimlidir.

Important

Dosyaları önce hazırlayabildiğiniz üretim senaryolarında, en yüksek veri alma aktarım hızı için COPY INTO kullanın.

Veriler zaten istemci veya uygulama katmanınızdaysa ve SQL bağlantısı üzerinden ambar tablolarına doğrudan veri alımına ihtiyacınız varsa BCP API'sini kullanın.

BCP API'sini kullanma zamanları

Aşağıdakiler gibi doğrudan alım senaryoları için BCP API'sini kullanın:

  • Verileri bellekte tutan ve toplu olarak yazan uygulama hizmetleri.
  • Komut satırı otomasyonu üzerinden dosya yükleyen operasyonel betikler ve çalıştırma yönergeleri.
  • SQL toplu kopyalama semantiğini kullanan veri tümleştirme araçları.
  • Halihazırda BCP API semantiğini kullanan ve COPY INTO hazırlama modeline göre yeniden düzenlenemeyen mevcut istemci araçları veya tümleştirmeler.
  • İstemcilerin küçük toplu verileri sık aralıklarla doğrudan veri ambarı SQL bağlantısı üzerinden gönderdiği mikro toplu işleme iş yükleri.

Prerequisites

  • Microsoft Entra ID kimlik doğrulamayı kullanın. SQL kimlik doğrulaması (kullanıcı adı ve parola) Warehouse'ta desteklenmez.

1. Seçenek: Betik tabanlı içeri aktarma için bcp.exe kullanın

Betiklerden, zamanlanmış işlerden veya runbook’lardan yinelenebilir komut satırıyla veri alma işlemine ihtiyaç duyduğunuzda bcp yardımcı programını kullanın. Bu seçenek, ayırıcılar, karakter kodlaması, toplu işlem boyutu ve hata çıktısı üzerinde açık denetim istediğiniz dosya tabanlı içe aktarma işlemleri için iyi bir seçenektir.

Bu seçenek, kaynak dosyalar SQL Server, Azure SQL veya benzer SQL uç noktaları tarafından bcp ... out oluşturulduğunda ve uyumlu toplu kopyalama dosya kurallarını korumak istediğinizde de önerilir.

Tipik akış:

  1. Ambarınıza bir hedef tablo hazırlayın.
  2. Hedefle eşleşen sütun sırasına sahip bir kaynak dosya (örneğin CSV) hazırlayın veya bir biçim dosyası kullanın.
  3. bcp ... in komutunu ambarınızın SQL uç noktası ve veritabanıyla çalıştırın.
  4. Dosya boyutuna ve biçimine göre toplu işlem boyutu ve ayraçlar gibi seçenekleri ayarlayın.

Örnek:

bcp dbo.Sales in sales.csv -S <workspace-endpoint> -d <database> -G -U <user@domain.com> -c -t ,

bcp belgelerinden yararlı seçenekler:

  • -S SQL uç noktasını veya veri ambarı bağlantı dizesini ayarlar.
  • -d hedef veritabanını ayarlar.
  • -GMicrosoft Entra kimlik doğrulaması kullanır. Bu önizleme senaryosu için desteklenen tek kimlik doğrulama seçeneği budur.
  • -Uetkileşimli oturum açma desenleri için Microsoft Entra kullanıcı asıl adınızı belirtir.
  • -c karakter veri biçimini kullanır.
  • -t , alan sonlandırıcısını (, bu örnekte) ayarlar.
  • -b büyük yükler için toplu iş boyutunu ayarlayabilir.

Tam söz dizimi ve platforma özgü seçenekler için bkz. bcp Yardımcı Programı ile Toplu Kopyalama.

Seçenek 2: C# SqlBulkCopy kullanma

Bellekte zaten veri tutan .NET hizmetleri ve uygulamaları için (örneğin, DataTable veya DbDataReader) Microsoft.Data.SqlClient.SqlBulkCopy kullanın. SqlBulkCopy satırları tek bir SQL bağlantısı üzerinden bir hedef tabloya verimli bir şekilde akışla aktarır. Bu, birçok ayrı INSERT ifadeyi düzenlemekten daha iyi bir seçimdir.

Tipik akış:

  1. Microsoft Entra kimlik doğrulamasını kullanarak veri ambarı bağlantı dizesiyle bir SQL bağlantısı açın.
  2. Bir SqlBulkCopy örnek oluşturun ve ayarlayın DestinationTableName.
  3. (İsteğe bağlı) Kaynak ve hedef sütun adları veya sırası farklıysa sütun eşlemeleri ekleyin.
  4. BatchSize ve BulkCopyTimeout gibi performansla ilgili özellikleri ayarlayın.
  5. Toplu işi yüklemek için WriteToServer veya WriteToServerAsync çağırın.

Örnek:

using Microsoft.Data.SqlClient;

using var connection = new SqlConnection(connectionString);
await connection.OpenAsync();

using var bulk = new SqlBulkCopy(connection);
bulk.DestinationTableName = "dbo.Sales";
await bulk.WriteToServerAsync(dataTable);

Yaygın ayarlama seçenekleri arasında BatchSize, BulkCopyTimeout ve kaynak ile hedef şemaların farklı olduğu durumlarda açık sütun eşlemeleri yer alır.

Seçenek 3: SQLServerBulkCopy Java kullanma

JDBC kaynaklarından veya bellek içi veri akışlarından veri alan Java hizmetlerde SQLServerBulkCopy kullanın. bcp.exegibi ancak doğrudan uygulama kodunda toplu yükleme davranışı sağlar.

Tipik akış:

  1. Microsoft Entra kimlik doğrulamasını kullanarak warehouse bağlantı dizesi ile JDBC bağlantısı açın.
  2. Bir SQLServerBulkCopy örnek oluşturun ve ayarlayın setDestinationTableName.
  3. (İsteğe bağlı) SQLServerBulkCopyOptions ve sütun eşlemelerini yapılandırın.
  4. Kaynak verileri ResultSet, RowSet veya ISQLServerBulkRecord olarak sağlayın.
  5. Verileri almak için writeToServer çağrısını yapın.

Örnek:

try (SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(connectionString)) {
    bulkCopy.setDestinationTableName("dbo.Sales");
    bulkCopy.writeToServer(resultSet);
}

JDBC toplu kopyalama API'si , ResultSetve RowSet kaynaklarından ISQLServerBulkRecordyazmayı destekler.

Toplu kopyalama seçeneği desteğiyle ilgili açıklamalar

Bu bölüm, Fabric Data Warehouse’da yaygın toplu kopyalama seçeneklerinin nasıl davrandığını açıklar. Seçenek adları, .NET SqlBulkCopyOptions, Java SQLServerBulkCopyOptions ve ilgili bcp toplu yükleme ipuçlarındaki ayarlarla eşlenir.

Uygulanamaz seçenekler

Ortak istemci API'leri aşağıdaki seçenekleri kabul eder, ancak Fabric Data Warehouse'daki toplu kopyalama bu seçenekleri yok sayar ve varsayılan hizmet davranışını kullanır:

  • CheckConstraints
  • TableLock
  • KeepNulls
  • FireTriggers

Performansla ilgili dikkat edilmesi gerekenler

Toplu kopyalama performansı büyük ölçüde toplu iş boyutlandırmaya ve istemci yükleme ağ kalitesine bağlıdır.

Parti boyutu

Toplu iş boyutunun aktarım hızı üzerinde önemli bir etkisi vardır. Her toplu işlemin sabit işleme yükü vardır, bu nedenle çok küçük toplu işler (örneğin, onlarca veya yüzlerce satır) göndermek büyük veri kümelerini yüklerken performansı önemli ölçüde düşürebilir.

Daha büyük yükler için daha büyük toplu işlemler kullanın. Pratik bir hedef, toplu iş başına yaklaşık 150 MB ile 1 GB arasıdır.

Birçok iş yükü için iyi bir başlangıç noktası , toplu iş başına 250 MB ile 500 MB arasıdır, ardından aktarım hızı ve istemci bellek sınırlarına göre ayarlanır.

İstemcinin yükleme bağlantısının kalitesi

Toplu kopyalama, verileri istemciden ambar uç noktasına akış halinde aktarır. Karşıya yükleme bant genişliği sınırlıysa veya ağ gecikme süresi yüksekse, ambar kaynakları kullanılabilir olduğunda bile alım aktarım hızı düşebilir.

En iyi performans için, istemci uygulamasını ambarla aynı Azure bölgede çalıştırın ve yüksek bant genişliğine sahip, düşük gecikme süreli bir ağ yolu kullanın.

BCP API'sini COPY INTO ile karşılaştırma

  • Veriler istemci/uygulama katmanında oluşturulduğunda veya tutulduğunda ve doğrudan alım gerektiğinde BCP API'sini kullanın.
  • Dosyaları depolama alanına koyabildiğiniz ve en yüksek aktarım hacimli veri alımı için birincil sunucu tarafı yolunu kullanmak istediğinizde COPY INTO kullanın.