Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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 INTOstaging-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:
- Forbered et målbord i dit lager.
- Forbered en kildefil (for eksempel CSV) med kolonnerækkefølge, der matcher målet, eller brug en formatfil.
- Kør
bcp ... inmed dit warehouses SQL-endpoint og database. - 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. -
-dSæ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. -
-cbruger tegndataformat. -
-tsætter feltterminatoren (,i dette eksempel). -
-bKan 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:
- Åbn en SQL-forbindelse med warehouse-forbindelsesstreng ved at bruge Microsoft Entra-autentificering.
- Opret en
SqlBulkCopyinstans og sætDestinationTableName. - (Valgfrit) Tilføj kolonnemappinger, hvis kilde- og målkolonnenavne eller rækkefølge varierer.
- Sæt performance-relaterede egenskaber såsom
BatchSizeogBulkCopyTimeout. - Ring
WriteToServerellerWriteToServerAsynclad 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:
- Åbn en JDBC-forbindelse med lagerets forbindelsesstreng ved at bruge Microsoft Entra-autentificering.
- Opret en
SQLServerBulkCopyinstans og sætsetDestinationTableName. - (Valgfrit) Konfigurér
SQLServerBulkCopyOptionsog kolonnemapping. - Angiv kildedataene som
ResultSet,RowSet, ellerISQLServerBulkRecord. - Kald
writeToServerfor 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:
CheckConstraintsTableLockKeepNullsFireTriggers
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 INTOBrug den, når du kan stagera filer i opbevaring og ønsker den primære serverside sti for højest gennemstrømning af data.