Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Warehouse i Microsoft Fabric
BCP API-et gir en direkte, klient-side inntastingsvei for å laste data inn i Warehouse uten å lagre filer i ekstern lagring.
Viktig!
Denne funksjonen er i forhåndsvisning.
BCP-verktøyet (bcp-verktøyet),.NET-klassen SqlBulkCopyog Java-klassen SQLServerBulkCopy er etablerte inntaksmetoder som brukes på tvers av SQL Server, Azure SQL og Azure Synapse dedikerte SQL-poolarbeidsbelastninger. Disse grensesnittene bruker BCP API og TDS bulk-load-protokoll, som vanligvis er mer effektivt enn rad-for-rad-setninger INSERT for høyvolumsinntak.
Viktig!
For høyest mulig inntakskapasitet i produksjonsscenarier hvor du kan iscenesette filer først, bruk COPY INTO.
Bruk BCP API når data allerede er i klient- eller applikasjonsnivået ditt, og du trenger direkte inntasting i lagertabeller over en SQL-tilkobling.
Når bør man bruke BCP API
Bruk BCP API for direkte inntastingsscenarier som:
- Applikasjonstjenester som holder data i minnet og skriver i batcher.
- Operasjonelle skript og runbooks som laster filer gjennom kommandolinjeautomatisering.
- Dataintegrasjonsverktøy som bruker SQL bulk copy semantikk.
- Eksisterende klientverktøy eller integrasjoner som allerede bruker BCP API-semantikk og ikke kan refaktoreres til et
COPY INTOstaging-mønster. - Mikrobatching av arbeidsbelastninger hvor klienter sender hyppige små batcher direkte over lagerets SQL-tilkobling.
Forutsetninger
- Bruk Microsoft Entra ID-autentisering. SQL-autentisering (brukernavn og passord) støttes ikke i Warehouse.
Alternativ 1: Bruk bcp.exe for skriptbasert inntak
Bruk bcp-verktøyet når du trenger repeterbar kommandolinjeinntasting fra skript, planlagte jobber eller runbooks. Dette alternativet passer godt for filbaserte importer, hvor du ønsker eksplisitt kontroll over avgrensere, koding, batchstørrelse og feilutdata.
Dette alternativet anbefales også når kildefiler er laget av bcp ... out SQL Server, Azure SQL eller lignende SQL-endepunkter, og du ønsker å bevare kompatible bulkkopieringsfilkonvensjoner.
Vanlig flyt:
- Forbered et målbord i lageret ditt.
- Forbered en kildefil (for eksempel CSV) med kolonnerekkefølge som matcher målet, eller bruk en formatfil.
- Kjør
bcp ... inmed lagerets SQL-endepunkt og database. - Juster alternativer som batchstørrelse og avgrensere basert 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 alternativer fra BCP-dokumentasjon:
-
-Ssetter SQL-endepunktet eller warehouse-tilkoblingsstreng. -
-dSetter destinasjonsdatabasen. -
-Gbruker Microsoft Entra-autentisering. Dette er det eneste støttede autentiseringsalternativet for dette forhåndsvisningsscenariet. -
-Uspesifiserer ditt Microsoft Entra-brukernavn for interaktive innloggingsmønstre. -
-cbruker tegndataformat. -
-tsetter feltterminatoren (,i dette eksempelet). -
-bKan sette batchstørrelse for store lass.
For fullstendig syntaks og plattformspesifikke alternativer, se Bulk Copy with bcp Utility.
Alternativ 2: Bruk C# SqlBulkCopy
Bruk Microsoft. Data.SqlClient.SqlBulkCopy for .NET-tjenester og applikasjoner som allerede har data i minnet (for eksempel, DataTable eller DbDataReader).
SqlBulkCopy strømmer rader effektivt til en destinasjonstabell over én SQL-tilkobling. Det er et bedre valg enn å utstede mange individuelle INSERT uttalelser.
Vanlig flyt:
- Åpne en SQL-tilkobling med warehouse-tilkoblingsstreng ved å bruke Microsoft Entra-autentisering.
- Opprett en
SqlBulkCopyinstans og settDestinationTableName. - (Valgfritt) Legg til kolonnekartlegginger hvis kilde- og målkolonnenavn eller rekkefølge varierer.
- Sett ytelsesrelaterte egenskaper som
BatchSizeogBulkCopyTimeout. - Ring
WriteToServerellerWriteToServerAsyncfor å laste inn batchen.
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);
Vanlige justeringsalternativer inkluderer BatchSize, BulkCopyTimeout, og eksplisitte kolonnemappinger der kilde- og målskjemaer skiller seg.
Alternativ 3: Bruk Java SQLServerBulkCopy
Bruk SQLServerBulkCopy i Java-tjenester som importerer data fra JDBC-kilder eller datastrømmer i minnet. Den gir bulk-lastingsoppførsel lik bcp.exe, men direkte i applikasjonskode.
Vanlig flyt:
- Åpne en JDBC-tilkobling med lagerets tilkoblingsstreng ved å bruke Microsoft Entra-autentisering.
- Opprett en
SQLServerBulkCopyinstans og settsetDestinationTableName. - (Valgfritt) Konfigurer
SQLServerBulkCopyOptionsog kolonnekartlegginger. - Oppgi kildedataene som
ResultSet,RowSet, ellerISQLServerBulkRecord. - Ring
writeToServerfor å ta inn data.
Eksempel:
try (SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(connectionString)) {
bulkCopy.setDestinationTableName("dbo.Sales");
bulkCopy.writeToServer(resultSet);
}
JDBCs bulk copy API støtter skriving fra ResultSet, RowSet, og ISQLServerBulkRecord kilder.
Merknader om støtte for massekopiering
Denne delen forklarer hvordan vanlige bulkkopieringsalternativer oppfører seg i Fabric datalager. Valgnavnene samsvarer med innstillinger i .NETSqlBulkCopyOptions, Java SQLServerBulkCopyOptionsog relaterte BCP-bulk-load-hint.
Ikke anvendelige alternativer
Vanlige klient-API-er aksepterer følgende alternativer, men massekopiering i Fabric datalager ignorerer dem og bruker standard tjenesteoppførsel:
CheckConstraintsTableLockKeepNullsFireTriggers
Ytelseshensyn
Massekopieringsytelse avhenger i stor grad av batch-størrelse og kvaliteten på klientopplastingsnettverket.
Bunkestørrelse
Batchstørrelsen har stor innvirkning på gjennomstrømningen. Hver batch har fast prosesseringsoverhead, så å sende svært små batcher (for eksempel titalls eller hundrevis av rader) kan redusere ytelsen betydelig ved lasting av store datasett.
For større lass, bruk større partier. Et praktisk mål er omtrent 150 MB til 1 GB per batch.
Et godt utgangspunkt for mange arbeidsbelastninger er 250 MB til 500 MB per batch, og deretter justeres basert på gjennomstrømning og klientminnegrenser.
Klientens opplastingstilkoblingskvalitet
Massekopiering strømmer data fra klienten til lagerets endepunkt. Hvis opplastingsbåndbredden er begrenset eller nettverksforsinkelsen høy, kan inntaksgjennomstrømningen reduseres selv når lagerressurser er tilgjengelige.
For best ytelse, kjør klientapplikasjonen i samme Azure-region som lageret og bruk en nettverksvei med høy båndbredde og lav latens.
BCP API sammenlignet med COPY INTO
- Bruk BCP API når data genereres eller lagres i klient-/applikasjonsnivået og direkte inntasting kreves.
- Bruk
COPY INTOnår du kan fase filer i lagring og ønsker den primære serverside-stien for høyest mulig gjennomstrømning.