Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:✅ Warehouse in Microsoft Fabric
Die BCP-API bietet einen direkten clientseitigen Ingestionspfad, um Daten in Warehouse zu laden, ohne Dateien zuvor in einem externen Speicher zwischenzuspeichern.
Important
Dieses Feature befindet sich in der Vorschauphase.
Das BCP-Tool (bcp-Hilfsprogramm), die .NET-SqlBulkCopyKlasse und die Java-SQLServerBulkCopyKlasse sind bewährte Methoden zur Datenaufnahme, die in Workloads von SQL Server, Azure SQL und dedizierten SQL-Pools in Azure Synapse verwendet werden. Diese Schnittstellen verwenden die BCP-API und das TDS-Massenladeprotokoll, was für die Aufnahme großer Datenmengen in der Regel effizienter ist als zeilenweise INSERT-Anweisungen.
Important
Verwenden Sie für den höchsten Aufnahmedurchsatz in Produktionsszenarien, in denen Sie Dateien zuerst stufen können, COPY INTO.
Verwenden Sie die BCP-API, wenn Sich Daten bereits in Ihrer Client- oder Anwendungsebene befinden und Sie eine direkte Aufnahme in Lagertabellen über eine SQL-Verbindung benötigen.
Wann BCP-API verwendet werden soll
Verwenden Sie die BCP-API für Direct-Ingestion-Szenarien, z. B.:
- Anwendungsdienste, die Daten im Arbeitsspeicher behalten und in Batches schreiben.
- Betriebsskripte und Runbooks, die Dateien mithilfe von Befehlszeilenautomatisierung laden.
- Datenintegrationstools, die SQL-Massenkopiesemantik verwenden.
- Vorhandene Clienttools oder Integrationen, die bereits BCP-API-Semantik verwenden und nicht in ein
COPY INTOStagingmuster umgestaltet werden können. - Mikrobatching-Workloads, bei denen Clients häufige kleine Batches direkt über die SQL-Verbindung des Lagerlagers übertragen.
Voraussetzungen
- Verwenden Sie die Microsoft Entra ID-Authentifizierung. Die SQL-Authentifizierung (Benutzername und Kennwort) wird in Warehouse nicht unterstützt.
Option 1: Verwenden Sie bcp.exe für die skriptbasierte Erfassung
Verwenden Sie das bcp-Hilfsprogramm , wenn Sie eine wiederholbare Befehlszeilenaufnahme von Skripts, geplanten Aufträgen oder Runbooks benötigen. Diese Option eignet sich gut für dateibasierte Importe, bei denen Sie explizite Kontrolle über Trennzeichen, Codierung, Batchgröße und Fehlerausgabe wünschen.
Diese Option wird auch empfohlen, wenn Quelldateien von bcp ... out aus SQL Server, Azure SQL oder ähnlichen SQL-Endpunkten erstellt wurden und Sie kompatible Dateikonventionen für Massenkopien beibehalten möchten.
Typischer Fluss:
- Bereiten Sie eine Zieltabelle in Ihrem Lager vor.
- Bereiten Sie eine Quelldatei (z. B. CSV) mit Spaltenreihenfolge vor, die dem Ziel entspricht, oder verwenden Sie eine Formatdatei.
- Führen Sie
bcp ... inmit dem SQL-Endpunkt und der Datenbank Ihres Warehouses aus. - Passen Sie Optionen wie Batchgröße und Trennzeichen anhand von Dateigröße und -format an.
Beispiel:
bcp dbo.Sales in sales.csv -S <workspace-endpoint> -d <database> -G -U <user@domain.com> -c -t ,
Nützliche Optionen aus der bcp-Dokumentation:
-
-Slegt den SQL-Endpunkt oder die Warehouse-Verbindungszeichenfolge fest. -
-dlegt die Zieldatenbank fest. -
-Gverwendet die Microsoft Entra-Authentifizierung. Dies ist die einzige unterstützte Authentifizierungsoption für dieses Vorschauszenario. -
-UGibt Ihren Microsoft Entra Benutzerprinzipalnamen für interaktive Anmeldemuster an. -
-cverwendet das Zeichendatenformat. -
-tlegt den Feldterminator fest (,in diesem Beispiel). -
-bkann die Batchgröße für große Lasten festlegen.
Vollständige Syntax und plattformspezifische Optionen finden Sie unter "Massenkopie mit bcp Utility".
Option 2: Verwenden von C# SqlBulkCopy
Verwenden Sie Microsoft. Data.SqlClient.SqlBulkCopy für .NET Dienste und Anwendungen, die bereits Daten im Arbeitsspeicher enthalten (z. BDataTable. oder DbDataReader).
SqlBulkCopy überträgt Zeilen effizient per Stream über eine SQL-Verbindung in eine Zieltabelle. Es ist eine bessere Wahl als das Ausgeben vieler einzelner INSERT Aussagen.
Typischer Fluss:
- Öffnen Sie mithilfe der Microsoft Entra-Authentifizierung eine SQL-Verbindung mit der Warehouse-Verbindungszeichenfolge.
- Erstellen Sie eine
SqlBulkCopy-Instanz und legen SieDestinationTableNamefest. - (Optional) Fügen Sie Spaltenzuordnungen hinzu, wenn quell- und Zielspaltennamen oder -reihenfolge unterschiedlich sind.
- Legen Sie leistungsbezogene Eigenschaften wie
BatchSizeundBulkCopyTimeoutfest. - Rufen Sie
WriteToServeroderWriteToServerAsyncauf, um den Batch zu laden.
Beispiel:
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);
Allgemeine Optimierungsoptionen umfassen BatchSize, BulkCopyTimeoutund explizite Spaltenzuordnungen, bei denen sich Quell- und Zielschemas unterscheiden.
Option 3: Verwenden von Java SQLServerBulkCopy
Verwenden Sie SQLServerBulkCopy in Java Diensten, die Daten aus ODBC-Quellen oder In-Memory-Datenströmen aufnehmen. Es bietet ein Massenladeverhalten ähnlich wie bcp.exe, aber direkt im Anwendungscode.
Typischer Fluss:
- Öffnen Sie mit der Microsoft Entra-Authentifizierung eine JDBC-Verbindung mit der warehouse-Verbindungszeichenfolge.
- Erstellen Sie eine Instanz von
SQLServerBulkCopyund legen SiesetDestinationTableNamefest. - (Optional) Konfigurieren Sie
SQLServerBulkCopyOptionsund die Spaltenzuordnungen. - Geben Sie die Quelldaten als
ResultSet,RowSetoderISQLServerBulkRecord. - Rufen Sie
writeToServerauf, um Daten zu erfassen.
Beispiel:
try (SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(connectionString)) {
bulkCopy.setDestinationTableName("dbo.Sales");
bulkCopy.writeToServer(resultSet);
}
Die BULK copy-API unterstützt das Schreiben aus ResultSet, RowSetund ISQLServerBulkRecord Quellen.
Hinweise zur Unterstützung der Option zum Massenkopieren
In diesem Abschnitt wird erläutert, wie sich allgemeine Massenkopieoptionen in Fabric Data Warehouse verhalten. Die Optionsnamen entsprechen den Einstellungen in .NET SqlBulkCopyOptions, Java SQLServerBulkCopyOptions und zugehörigen BCP-Hinweisen zum Massenladen.
Nicht zutreffende Optionen
Gängige Client-APIs akzeptieren die folgenden Optionen, aber das Massenkopieren im Fabric Data Warehouse ignoriert sie und verwendet das Standardverhalten des Diensts:
CheckConstraintsTableLockKeepNullsFireTriggers
Leistungsüberlegungen
Die Leistung von Massenkopien hängt stark von der Batchgröße und der Netzwerkqualität des Clientuploads ab.
Batchgröße
Die Batchgröße wirkt sich erheblich auf den Durchsatz aus. Jeder Batch hat einen festen Verarbeitungsaufwand, sodass das Senden sehr kleiner Batches (z. B. Zehner oder Hunderter Zeilen) die Leistung beim Laden großer Datasets erheblich reduzieren kann.
Verwenden Sie für größere Lasten größere Batches. Ein praktisches Ziel beträgt etwa 150 MB bis 1 GB pro Batch.
Ein guter Ausgangspunkt für viele Workloads beträgt 250 MB bis 500 MB pro Batch, und passen Sie dann basierend auf Durchsatz- und Clientspeichergrenzwerten an.
Qualität der Uploadverbindung des Clients
Massenkopie streamt Daten vom Client an den Warehouse-Endpunkt. Wenn die Uploadbandbreite begrenzt ist oder die Netzwerklatenz hoch ist, kann der Aufnahmedurchsatz auch dann verringert werden, wenn Lagerressourcen verfügbar sind.
Um eine optimale Leistung zu erzielen, führen Sie die Clientanwendung in derselben Azure Region wie das Lager aus, und verwenden Sie einen Netzwerkpfad mit hoher Bandbreite und geringer Latenz.
BCP-API im Vergleich zu COPY INTO
- Verwenden Sie die BCP-API , wenn Daten auf der Client-/Anwendungsebene generiert oder gespeichert werden und die direkte Aufnahme erforderlich ist.
- Verwenden Sie
COPY INTO, wenn Sie Dateien im Speicher bereitstellen und den primären serverseitigen Pfad für die Erfassung mit dem höchsten Durchsatz nutzen möchten.
Verwandte Inhalte
- Daten in das Data Warehouse laden
- Einspeisen von Daten in Ihr Lager mithilfe der COPY-Anweisung
- Verwenden der Massenkopie-API für eine schnellere Aufnahme in Fabric Data Warehouse (Blog)
- Massenkopie mit dem Dienstprogramm bcp
- SqlBulkCopy-Klasse
- SQLServerBulkCopy-Klasse
- Verwenden von Massenkopieren mit dem JDBC-Treiber