Indsaml data i dit lager ved at bruge BCP API (Forhåndsvisning)

Gælder for:✅ Warehouse i Microsoft Fabric

BCP API'en giver en direkte, klient-side indlæsningssti til at indlæse data i Warehouse uden at staging filer i ekstern lagring.

Important

Denne funktion er i prøveversion.

BCP-værktøjet (bcp-værktøj),.NET-klassen SqlBulkCopyog Java-klassen SQLServerBulkCopy er etablerede indtagelsesmetoder, der anvendes på tværs af SQL Server, Azure SQL og Azure Synapse dedikerede SQL pool-arbejdsbelastninger. Disse grænseflader bruger BCP API'en og TDS bulk-load-protokollen, som typisk er mere effektiv end række-for-række-sætninger INSERT til højvolumen-indtagelse.

Important

For den højeste inputhastighed i produktionsscenarier, hvor du kan iscenesætte filer først, brug COPY INTO.

Brug BCP API, når data allerede er i din klient- eller applikationsniveau, og du har brug for direkte indlæsning i warehouse-tabeller over en SQL-forbindelse.

Hvornår skal man bruge BCP API

Brug BCP API til direkte indlæsningsscenarier såsom:

  • Applikationstjenester, der gemmer data i hukommelsen og skriver i batches.
  • Operationelle scripts og runbooks, der indlæser filer via kommandolinjeautomatisering.
  • Dataintegrationsværktøjer, der bruger SQL bulk copy semantik.
  • Eksisterende klientværktøjer eller integrationer, der allerede bruger BCP API-semantik og ikke kan refaktoreres til et COPY INTO staging-mønster.
  • Mikrobatching af arbejdsbelastninger, hvor klienter skubber hyppige små batches direkte over lagerets SQL-forbindelse.

Forudsætninger

  • Brug Microsoft Entra ID-autentificering. SQL-autentificering (brugernavn og adgangskode) understøttes ikke i Warehouse.

Mulighed 1: Brug bcp.exe til scriptbaseret indlæsning

Brug bcp-værktøjet , når du har brug for gentagelig kommandolinje-indtastning fra scripts, planlagte jobs eller runbooks. Denne mulighed passer godt til filbaserede import, hvor du ønsker eksplicit kontrol over afgrænsere, kodning, batchstørrelse og fejloutput.

Denne mulighed anbefales også, når kildefiler er oprettet af bcp ... out SQL Server, Azure SQL eller lignende SQL-endpoints, og du ønsker at bevare kompatible bulk-kopi-filkonventioner.

Typisk forløb:

  1. Forbered et målbord i dit lager.
  2. Forbered en kildefil (for eksempel CSV) med kolonnerækkefølge, der matcher målet, eller brug en formatfil.
  3. Kør bcp ... in med dit warehouses SQL-endpoint og database.
  4. Juster muligheder som batchstørrelse og afgrænsere baseret på filstørrelse og format.

Eksempel:

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

Nyttige muligheder fra BCP-dokumentation:

  • -Ssætter SQL-endpointet eller warehouse-forbindelsesstreng.
  • -d Sætter destinationsdatabasen.
  • -Gbruger Microsoft Entra-autentificering. Dette er den eneste understøttede autentificeringsmulighed for dette preview-scenarie.
  • -UAngiver dit Microsoft Entra brugernavn for interaktive loginmønstre.
  • -c bruger tegndataformat.
  • -t sætter feltterminatoren (, i dette eksempel).
  • -b Kan indstille batchstørrelsen til store læs.

For fuld syntaks og platformspecifikke muligheder, se Bulk Copy med bcp Utility.

Mulighed 2: Brug C# SqlBulkCopy

Brug Microsoft. Data.SqlClient.SqlBulkCopy for .NET-tjenester og applikationer, der allerede har data i hukommelsen (for eksempel DataTable eller DbDataReader). SqlBulkCopy streamer rækker effektivt til en destinationstabel over én SQL-forbindelse. Det er et bedre valg end at udstede mange individuelle INSERT erklæringer.

Typisk forløb:

  1. Åbn en SQL-forbindelse med warehouse-forbindelsesstreng ved at bruge Microsoft Entra-autentificering.
  2. Opret en SqlBulkCopy instans og sæt DestinationTableName.
  3. (Valgfrit) Tilføj kolonnemappinger, hvis kilde- og målkolonnenavne eller rækkefølge varierer.
  4. Sæt performance-relaterede egenskaber såsom BatchSize og BulkCopyTimeout.
  5. Ring WriteToServer eller WriteToServerAsync lad batchen blive indlæst.

Eksempel:

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);

Almindelige tuningmuligheder inkluderer BatchSize, BulkCopyTimeout, og eksplicitte kolonnemappinger, hvor kilde- og målskemaer adskiller sig.

Mulighed 3: Brug Java SQLServerBulkCopy

Brug SQLServerBulkCopy i Java-tjenester, der indlæser data fra JDBC-kilder eller datastrømme i hukommelsen. Den giver bulk-loading adfærd, der ligner bcp.exe, men direkte i applikationskode.

Typisk forløb:

  1. Åbn en JDBC-forbindelse med lagerets forbindelsesstreng ved at bruge Microsoft Entra-autentificering.
  2. Opret en SQLServerBulkCopy instans og sæt setDestinationTableName.
  3. (Valgfrit) Konfigurér SQLServerBulkCopyOptions og kolonnemapping.
  4. Angiv kildedataene som ResultSet, RowSet, eller ISQLServerBulkRecord.
  5. Kald writeToServer for at indlæse data.

Eksempel:

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

JDBC's bulk copy API understøtter skrivning fra ResultSet, RowSet, og ISQLServerBulkRecord kilder.

Bemærkninger om understøttelse af massekopieringsmuligheder

Dette afsnit forklarer, hvordan almindelige bulkkopieringsmuligheder opfører sig i Fabric data warehouse. Valgmulighederne er kortlagt til indstillinger i .NET, SqlBulkCopyOptionsJava SQLServerBulkCopyOptionsog relaterede BCP bulk-load hints.

Ikke relevante muligheder

Almindelige klient-API'er accepterer følgende muligheder, men massekopiering i Fabric data warehouse ignorerer dem og bruger standardserviceadfærd:

  • CheckConstraints
  • TableLock
  • KeepNulls
  • FireTriggers

Ydelsesovervejelser

Massekopiydelse afhænger i høj grad af batch-størrelse og kvaliteten af klientens uploadnetværk.

Batchstørrelse

Batchstørrelsen har stor betydning for gennemstrømningen. Hver batch har fast behandlingsoverhead, så at sende meget små batches (for eksempel titusinder eller hundreder af rækker) kan reducere ydeevnen betydeligt ved indlæsning af store datasæt.

Til større læs, brug større partier. Et praktisk mål er cirka 150 MB til 1 GB pr. batch.

Et godt udgangspunkt for mange arbejdsbelastninger er 250 MB til 500 MB pr. batch, og juster derefter baseret på gennemstrømning og klienthukommelsesgrænser.

Kvaliteten af klientens uploadforbindelse

Massekopiering streamer data fra klienten til lagerets endepunkt. Hvis uploadbåndbredden er begrænset eller netværkslatenstiden er høj, kan indtagelsesgennemstrømningen falde, selv når lagerressourcer er tilgængelige.

For bedst ydeevne kør klientapplikationen i samme Azure-region som warehouse'en og brug en netværkssti med høj båndbredde og lav latenstid.

BCP API sammenlignet med COPY INTO

  • Brug BCP API, når data genereres eller opbevares i klient-/applikationslaget, og direkte indtastning er nødvendig.
  • COPY INTO Brug den, når du kan stagera filer i opbevaring og ønsker den primære serverside sti for højest gennemstrømning af data.