Tallenna dataa varastoosi käyttämällä BCP API:ta (Preview)

Sovellettavissa:✅ Varasto Microsoft Fabric

BCP-API tarjoaa suoran, asiakaspuolen vastaanottoreitin datan lataamiseen Warehouseen ilman, että tiedostot siirtyvät ulkoiseen tallennustilaan.

Tärkeää

Tämä ominaisuus on esikatseluvaiheessa.

BCP-työkalu (bcp-apuohjelma),.NET-luokka SqlBulkCopyja Java-luokka SQLServerBulkCopy ovat vakiintuneita vastaanottomenetelmiä, joita käytetään SQL Server-, Azure SQL- ja Azure Synapse-omistettujen SQL-poolin työkuormissa. Nämä rajapinnat käyttävät BCP API:ta ja TDS:n massakuormitusprotokollaa, joka on tyypillisesti tehokkaampi kuin rivi kerrallaan INSERT tehtävät lauseet suurten tilavuuksien vastaanotossa.

Tärkeää

Suurimman vastaanottokapasiteetin saavuttamiseksi tuotantotilanteissa, joissa tiedostot voi ensin vaiheistaa, käytä COPY INTOa.

Käytä BCP-API:a, kun data on jo asiakas- tai sovellustasolla ja tarvitset suoraa tallennusta varastotauluihin SQL-yhteyden kautta.

Milloin käyttää BCP API:ta

Käytä BCP API:ta suoran vastaanoton skenaarioihin, kuten:

  • Sovelluspalvelut, jotka säilyttävät datan muistissa ja kirjoittavat erissä.
  • Operatiiviset skriptit ja juoksukirjat, jotka lataavat tiedostoja komentoriviautomaation kautta.
  • Datan integrointityökalut, jotka käyttävät SQL:n massakopiointisemantiikkaa.
  • Olemassa olevat asiakastyökalut tai integraatiot, jotka jo käyttävät BCP-rajapinnan semantiikkaa eikä niitä voi refaktoroida COPY INTO vaiheistukseen.
  • Mikroeräkuormat, joissa asiakkaat lähettävät usein pieniä eriä suoraan varaston SQL-yhteyden yli.

Edellytykset

  • Käytä Microsoft Entra ID -tunnistautumista. SQL-tunnistautumista (käyttäjätunnus ja salasana) ei tueta Warehousessa.

Vaihtoehto 1: Käytä bcp.exe skriptipohjaiseen vastaanottoon

Käytä bcp-työkalua , kun tarvitset toistettavaa komentorivien vastaanottoa skripteistä, ajastetuista töistä tai ajokirjoista. Tämä vaihtoehto sopii hyvin tiedostopohjaisiin tuontiin, joissa haluat selkeän hallinnan erottimiin, koodaukseen, eräkokoon ja virheiden tulokseen.

Tätä vaihtoehtoa suositellaan myös silloin, kun lähdetiedostot on luotu bcp ... out SQL Server-, Azure SQL- tai vastaavilla SQL-päätelaitteilla ja haluat säilyttää yhteensopivat bulk-copy -tiedostokäytännöt.

Tyypillinen työnkulku:

  1. Valmistele kohdepöytä varastossasi.
  2. Valmistele lähdetiedosto (esimerkiksi CSV) sarakejärjestyksellä, joka vastaa kohdetta, tai käytä muototiedostoa.
  3. Aja bcp ... in varastosi SQL-päätepisteellä ja tietokannalla.
  4. Säädä vaihtoehtoja, kuten eräkokoa ja erottajia, tiedostokoon ja muodon mukaan.

Esimerkki:

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

Hyödyllisiä vaihtoehtoja BCP-dokumentaatiosta:

  • -Sasettaa SQL-päätepisteen tai varaston yhteysmerkkijono.
  • -d asettaa kohdetietokannan.
  • -Gkäyttää Microsoft Entra -tunnistautumista. Tämä on ainoa tuettu todennusvaihtoehto tässä esikatselutilanteessa.
  • -Umäärittelee Microsoft Entra -käyttäjänimesi interaktiivisille kirjautumismalleille.
  • -c käyttää merkkitietomuotoa.
  • -t asettaa kentän terminaattorin (, tässä esimerkissä).
  • -b Suurille kuormille voi asettaa eräkokoa.

Täydelliset syntaksin ja alustakohtaiset vaihtoehdot löytyvät kohdasta Bulk Copy with bcp Utility.

Vaihtoehto 2: Käytä C# SqlBulkCopy

Käytä Microsoftia. Data.SqlClient.SqlBulkCopy .NET-palveluille ja sovelluksille, jotka jo säilyttävät dataa muistissa (esimerkiksi DataTable tai DbDataReader). SqlBulkCopy virtaa rivit tehokkaasti kohdetauluun yhden SQL-yhteyden kautta. Se on parempi vaihtoehto kuin monien yksittäisten INSERT lausuntojen antaminen.

Tyypillinen työnkulku:

  1. Avaa SQL-yhteys varaston yhteysmerkkijono avulla Microsoft Entra -tunnistautumisen avulla.
  2. Luo instanssi SqlBulkCopy ja aseta DestinationTableName.
  3. (Valinnainen) Lisää sarakkeiden kartoitukset, jos lähde- ja kohdesarakkeen nimet tai järjestys eroavat.
  4. Aseta suorituskykyyn liittyvät ominaisuudet, kuten BatchSize ja BulkCopyTimeout.
  5. Soita WriteToServer tai WriteToServerAsync lataa erä.

Esimerkki:

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

Yleisiä säätövaihtoehtoja ovat BatchSize, BulkCopyTimeout, ja eksplisiittiset sarakkeiden kartoitukset, joissa lähde- ja kohdeskeemat eroavat.

Vaihtoehto 3: Käytä Java SQLServerBulkCopy

Käytä SQLServerBulkCopya Java-palveluissa, jotka vastaanottavat dataa JDBC-lähteistä tai muistin sisäisistä datavirroista. Se tarjoaa massalatauskäyttäytymistä, joka muistuttaa bcp.exe, mutta suoraan sovelluskoodissa.

Tyypillinen työnkulku:

  1. Avaa JDBC-yhteys varaston yhteysmerkkijono avulla käyttämällä Microsoft Entra -tunnistautumista.
  2. Luo instanssi SQLServerBulkCopy ja aseta setDestinationTableName.
  3. (Valinnainen) Määritä SQLServerBulkCopyOptions ja määritä sarakkeiden kartoitukset.
  4. Anna lähdedata muodossa ResultSet, RowSet, tai ISQLServerBulkRecord.
  5. Puhelu writeToServer tiedon vastaanottamiseksi.

Esimerkki:

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

JDBC:n massakopiointi-API tukee kirjoittamista , ResultSetRowSet, ja ISQLServerBulkRecord lähteistä.

Kommentteja massakopiooption tuesta

Tässä osiossa selitetään, miten yleiset massakopiovaihtoehdot käyttäytyvät Fabric tietovarasto. Vaihtoehtojen nimet vastaavat asetuksia .NETSqlBulkCopyOptions:ssä, JavaSQLServerBulkCopyOptions:ssa ja vastaavissa bcp-massalatausvihjeissä.

Ei sovellettavissa olevia vaihtoehtoja

Yleiset asiakasrajapinnat hyväksyvät seuraavat vaihtoehdot, mutta massakopiointi Fabric tietovarasto jättää ne huomiotta ja käyttää oletuspalvelukäyttäytymistä:

  • CheckConstraints
  • TableLock
  • KeepNulls
  • FireTriggers

Suorituskykyyn liittyviä huomioita

Massakopioinnin suorituskyky riippuu vahvasti eräkokoista ja asiakaslähetysverkon laadusta.

Erän koko

Eräkoko vaikuttaa merkittävästi läpimenoon. Jokaisessa erässä on kiinteä prosessointikuorma, joten hyvin pienten erien lähettäminen (esimerkiksi kymmeniä tai satoja rivejä) voi merkittävästi heikentää suorituskykyä suurten tietojoukkojen latauksessa.

Suuremmille kuormille käytä suurempia erä. Käytännön tavoite on noin 150 MB–1 GB per erä.

Hyvä lähtökohta monille työkuormille on 250 MB–500 MB per erä, ja sitten se säätää läpimenon ja asiakasmuistirajojen mukaan.

Asiakaslatausyhteyden laatu

Massakopiointi lähettää dataa asiakkaalta varaston päätepisteelle. Jos lähetyskaistanleveys on rajallinen tai verkon viive on korkea, vastaanoton läpimenokyky voi vähentyä, vaikka varastoresursseja olisi saatavilla.

Parhaan suorituskyvyn saavuttamiseksi ajaa asiakassovellus samassa Azure-alueella kuin varasto ja käytä suuren kaistanleveyden ja matalan viiveen verkkopolkua.

BCP API verrattuna COPY INTO -menetelmään

  • Käytä BCP-rajapintaa , kun dataa luodaan tai pidetään asiakas-/sovellustasolla ja suora tiedonsiirto vaaditaan.
  • Käytä COPY INTO silloin, kun voit vaiheistaa tiedostoja tallennustilassa ja haluat ensisijaisen palvelinpuolen polun suurimman läpimenon vastaanottoa varten.