Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:✅ Warehouse i Microsoft Fabric
BCP-API:et tillhandahåller en direkt inmatningssökväg på klientsidan för att läsa in data till Warehouse utan mellanlagringsfiler i extern lagring.
Important
Den här funktionen är i förhandsversion.
BCP-verktyget (bcp-verktyget), klassen .NET SqlBulkCopyoch Java SQLServerBulkCopy är etablerade inmatningsmetoder som används i arbetsbelastningar för SQL Server, Azure SQL och Azure Synapse dedikerade SQL-pooler. Dessa gränssnitt använder BCP API och TDS massinläsningsprotokoll, vilket vanligtvis är effektivare än rad-för-rad-instruktioner INSERT för hög volyminmatning.
Important
Använd COPY INTO för högsta inmatningsgenomströmning i produktionsscenarier där du först kan mellanlagra filer.
Använd BCP API när data redan finns på klient- eller programnivån och du behöver direkt inmatning i lagertabeller via en SQL-anslutning.
När du ska använda BCP API
Använd BCP API för direktinmatningsscenarier, till exempel:
- Programtjänster som lagrar data i minnet och skriver i batchar.
- Driftskript och runbooks som läser in filer via kommandoradsautomatisering.
- Dataintegreringsverktyg som använder SQL masskopieringssemantik.
- Befintliga klientverktyg eller integreringar som redan använder BCP API-semantik och som inte kan omstruktureras till ett
COPY INTOmellanlagringsmönster. - Arbetsbelastningar för mikrobatchning där klienter skickar täta små batchar direkt via datalagrets SQL-anslutning.
Prerequisites
- Använd Microsoft Entra ID-autentisering. SQL-autentisering (användarnamn och lösenord) stöds inte i Warehouse.
Alternativ 1: Använd bcp.exe för skriptbaserad inmatning
Använd bcp-verktyget när du behöver repeterbar kommandoradsinmatning från skript, schemalagda jobb eller runbooks. Det här alternativet passar bra för filbaserade importer där du vill ha explicit kontroll över avgränsare, kodning, batchstorlek och felutdata.
Det här alternativet rekommenderas också när källfiler skapades av bcp ... out från SQL Server, Azure SQL eller liknande SQL-slutpunkter och du vill bevara kompatibla masskopieringsfilkonventioner.
Typiskt flöde:
- Förbered en måltabell i ditt lager.
- Förbered en källfil (till exempel CSV) med kolumnordning som matchar målet eller använd en formatfil.
- Kör
bcp ... inmed SQL-slutpunkten och databasen för ditt datalager. - Justera alternativ som batchstorlek och avgränsare baserat på filstorlek och format.
Exempel:
bcp dbo.Sales in sales.csv -S <workspace-endpoint> -d <database> -G -U <user@domain.com> -c -t ,
Användbara alternativ från bcp-dokumentationen:
-
-Sanger SQL-slutpunkten eller warehousets anslutningssträng. -
-danger måldatabasen. -
-Ganvänder Microsoft Entra autentisering. Det här är det enda autentiseringsalternativet som stöds för det här förhandsversionsscenariot. -
-Uanger ditt användarhuvudnamn i Microsoft Entra för interaktiva inloggningsmönster. -
-canvänder teckendataformat. -
-tanger fältavgränsaren (,i det här exemplet). -
-bkan ange batchstorlek för stora belastningar.
Fullständig syntax och plattformsspecifika alternativ finns i Masskopiering med bcp-verktyget.
Alternativ 2: Använd C# SqlBulkCopy
Använd Microsoft. Data.SqlClient.SqlBulkCopy för .NET tjänster och program som redan innehåller data i minnet (till exempel DataTable eller DbDataReader).
SqlBulkCopy strömmar rader effektivt till en måltabell över en SQL-anslutning. Det är ett bättre val än att utfärda många enskilda INSERT uttalanden.
Typiskt flöde:
- Öppna en SQL-anslutning med anslutningssträngen för datalagret med hjälp av Microsoft Entra-autentisering.
- Skapa en
SqlBulkCopyinstans och angeDestinationTableName. - (Valfritt) Lägg till kolumnmappningar om käll- och målkolumnnamnen eller ordningen skiljer sig åt.
- Ange prestandarelaterade egenskaper som
BatchSizeochBulkCopyTimeout. - Anropa
WriteToServerellerWriteToServerAsyncför att läsa in batchen.
Exempel:
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);
Vanliga justeringsalternativ är BatchSize, BulkCopyTimeoutoch explicita kolumnmappningar där käll- och målscheman skiljer sig åt.
Alternativ 3: Använd Java SQLServerBulkCopy
Använd SQLServerBulkCopy i Java tjänster som matar in data från JDBC-källor eller minnesinterna dataströmmar. Det ger massinläsningsbeteende som liknar bcp.exe, men direkt i programkoden.
Typiskt flöde:
- Öppna en JDBC-anslutning med anslutningssträngen för warehouse med Microsoft Entra-autentisering.
- Skapa en
SQLServerBulkCopyinstans och angesetDestinationTableName. - (Valfritt) Konfigurera
SQLServerBulkCopyOptionsoch kolumnmappningar. - Ange källdata som
ResultSet,RowSetellerISQLServerBulkRecord. - Anropa
writeToServerför att mata in data.
Exempel:
try (SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(connectionString)) {
bulkCopy.setDestinationTableName("dbo.Sales");
bulkCopy.writeToServer(resultSet);
}
JDBC-masskopierings-API:et stöder skrivning från ResultSet, RowSetoch ISQLServerBulkRecord källor.
Kommentarer om stöd för masskopieringsalternativ
I det här avsnittet beskrivs hur vanliga alternativ för masskopiering fungerar i Fabric Data Warehouse. Alternativnamnen motsvarar inställningar i .NET SqlBulkCopyOptions, Java SQLServerBulkCopyOptions och relaterade BCP-hintar för massinläsning.
Ej tillämpliga alternativ
Vanliga klient-API:er accepterar följande alternativ, men masskopiering i Fabric Data Warehouse ignorerar dem och använder standardtjänstbeteende:
CheckConstraintsTableLockKeepNullsFireTriggers
Prestandaöverväganden
Masskopieringsprestanda beror mycket på batchstorlek och nätverkskvalitet för klientuppladdning.
Batchstorlek
Batchstorleken har stor påverkan på genomströmningen. Varje batch har fasta bearbetningskostnader, så att skicka mycket små batchar (till exempel tiotals eller hundratals rader) kan avsevärt minska prestanda vid inläsning av stora datamängder.
Använd större batchar för större belastningar. Ett praktiskt mål är cirka 150 MB till 1 GB per batch.
En bra utgångspunkt för många arbetsbelastningar är 250 MB till 500 MB per batch och justeras sedan baserat på dataflödes- och klientminnesgränser.
Anslutningskvalitet för klientuppladdning
Masskopiering strömmar data från klienten till lagerslutpunkten. Om uppladdningsbandbredden är begränsad eller nätverksfördröjningen är hög kan dataflödet för inmatning minska även när lagerresurser är tillgängliga.
För bästa prestanda kör du klientprogrammet i samma Azure region som lagret och använder en nätverkssökväg med hög bandbredd och låg latens.
BCP API jämfört med COPY INTO
- Använd BCP API när data genereras eller lagras på klient-/programnivån och direkt inmatning krävs.
- Använd
COPY INTOnär du kan lagra filer i lagringsutrymmet och vill använda den primära serversidesvägen för inläsning med högsta genomströmning.