Delen via


Gegevens voorbereiden voor bulksgewijs exporteren of importeren

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

In deze sectie worden de overwegingen besproken die betrokken zijn bij het plannen van bulkexportbewerkingen en de vereisten voor bulkimportbewerkingen.

Opmerking

Als u niet zeker weet hoe u een gegevensbestand formatteert voor bulksgewijs importeren, gebruikt u het hulpprogramma bcp om gegevens uit de tabel te exporteren naar een gegevensbestand. In de opmaak van elk gegevensveld in dit bestand ziet u de opmaak die nodig is om gegevens bulksgewijs te importeren in de bijbehorende tabelkolom. Gebruik dezelfde gegevensopmaak voor velden van uw gegevensbestand.

Overwegingen voor gegevensbestandsindelingen voor bulkexport

Voordat u een bulkexportbewerking uitvoert met behulp van de opdracht bcp , moet u rekening houden met het volgende:

  • Wanneer gegevens naar een bestand worden geëxporteerd, maakt de bcp-opdracht het gegevensbestand automatisch met behulp van de opgegeven bestandsnaam. Als die bestandsnaam al wordt gebruikt, worden de bestaande inhoud van het bestand overschreven door de gegevens die bulksgewijs naar het gegevensbestand worden gekopieerd.

  • Voor bulksgewijs exporteren van een tabel of weergave naar een gegevensbestand is een machtiging vereist SELECT voor de tabel of weergave die bulksgewijs wordt gekopieerd.

  • SQL Server kan parallelle scans gebruiken om gegevens op te halen. Daarom is er bij de tabelrijen die bulkgewijs worden geëxporteerd vanuit een instantie van SQL Server normaal gesproken geen garantie voor een specifieke volgorde in het gegevensbestand. Als u bulksgewijs geëxporteerde tabelrijen wilt weergeven in een specifieke volgorde in het gegevensbestand, gebruikt u de optie query-out om bulksgewijs vanuit een query te exporteren en een ORDER BY component op te geven.

Vereisten voor gegevensbestandsindeling voor bulkimport

Als u gegevens uit een gegevensbestand wilt importeren, moet het bestand voldoen aan de volgende basisvereisten:

  • De gegevens moeten de rij- en kolomindeling hebben.

Opmerking

De structuur van het gegevensbestand hoeft niet identiek te zijn aan de structuur van de SQL Server-tabel, omdat kolommen kunnen worden overgeslagen of opnieuw kunnen worden gerangschikt tijdens het bulkimportproces.

  • De gegevens in het gegevensbestand moeten een ondersteunde indeling hebben, zoals teken of systeemeigen indeling.

  • De gegevens kunnen een teken- of systeemeigen binaire indeling hebben, inclusief Unicode.

  • Als u gegevens wilt importeren met behulp van een bcp-opdracht , BULK INSERT instructie of INSERT ... SELECT * FROM OPENROWSET(BULK...) instructie, moet de doeltabel al bestaan.

  • Elk veld in het gegevensbestand moet compatibel zijn met de bijbehorende kolom in de doeltabel. Een veld int kan bijvoorbeeld niet worden geladen in een datum/tijd-kolom . Zie Gegevensindelingen voor bulkimport of bulkexport (SQL Server) en geef compatibiliteitsgegevensindelingen op bij het gebruik van bcp (SQL Server) voor meer informatie.

    Opmerking

    Als u een subset van rijen wilt opgeven die u wilt importeren uit een gegevensbestand in plaats van het hele bestand, kunt u een bcp-opdracht gebruiken met de -F <first_row> schakeloptie en/of -L <last_row> switch. Zie bcp Utilityvoor meer informatie.

  • Als u gegevens wilt importeren uit gegevensbestanden met velden met een vaste lengte of vaste breedte, gebruikt u een indelingsbestand. Zie XML Format Files (SQL Server) voor meer informatie.

  • Vanaf SQL Server 2017 (14.x) kan een CSV-bestand worden gebruikt als gegevensbestand voor een bulkimport van gegevens in SQL Server. Het veldeindteken van een CSV-bestand hoeft geen komma (,) te zijn. Het CSV-bestand moet voldoen aan de volgende beperkingen:

    • Gegevensvelden kunnen het veldeindteken niet bevatten.

    • Als u velden tussen aanhalingstekens ("") moet plaatsen, moet u alle gegevensvelden tussen aanhalingstekens plaatsen.

      Als u gegevens bulksgewijs wilt importeren uit een Microsoft FoxPro- of Visual FoxPro-tabelbestand (.dbf) of een Microsoft Excel-werkbladbestand (.xls), moet u de gegevens converteren naar een CSV-bestand dat voldoet aan de voorgaande beperkingen. De bestandsextensie is .csvdoorgaans . U kunt het .csv bestand vervolgens gebruiken als een gegevensbestand in een SQL Server-bulkimportbewerking.

      Op 32-bits systemen (SQL Server 2014 (12.x) en eerdere versies kunt u CSV-gegevens importeren in een SQL Server-tabel zonder optimalisaties bulksgewijs te importeren met behulp van OPENROWSET met de OLE DB-provider voor Jet. Jet behandelt tekstbestanden als tabellen, waarbij het schema is gedefinieerd door een schema.ini bestand dat zich in dezelfde map bevindt als de gegevensbron. Voor CSV-gegevens is schema.inieen van de parameters in het "FORMAT=CSVDelimited" bestand. Als u deze oplossing wilt gebruiken, moet u begrijpen hoe de Jet Text IISAM werkt (de syntaxis van de verbindingsreeks, schema.ini het gebruik, de opties voor registerinstellingen, enzovoort).) De beste bronnen van deze informatie zijn Artikelen over Help en Knowledge Base (KB) van Microsoft Access. Zie Initialisatie van de Tekstgegevensbronstuurprogramma, Hoe een SQL Server 7.0 Gedistribueerde Query te gebruiken met een Gelinkte Server voor Beveiligde Toegang tot Databases, HOE TE GEBRUIKEN: Jet OLE DB Provider 4.0 om Verbinding te Maken met ISAM Databases, en Hoe Gescheiden Tekstbestanden te Openen met de Jet Provider's Tekst IIsam.

Daarnaast heeft het bulksgewijs importeren van gegevens uit een gegevensbestand in een tabel de volgende vereisten:

  • Gebruikers moeten rechten INSERT en SELECT hebben op de tabel. Gebruikers hebben ook toestemming nodig wanneer ze opties gebruiken waarvoor DDL-bewerkingen (Data Definition Language) zijn ALTER TABLE vereist, zoals het uitschakelen van beperkingen.

  • Wanneer u gegevens bulksgewijs importeert met behulp van BULK INSERT of INSERT ... SELECT * FROM OPENROWSET(BULK...), moet het gegevensbestand toegankelijk zijn voor leesbewerkingen door het beveiligingsprofiel van het SQL Server-proces (als de gebruiker zich aanmeldt met de door SQL Server verstrekte aanmelding) of door de Microsoft Windows-aanmelding die wordt gebruikt onder gedelegeerde beveiliging. Daarnaast moet de gebruiker gemachtigd zijn ADMINISTER BULK OPERATIONS om het bestand te lezen.

Opmerking

Bulksgewijs importeren in een gepartitioneerde weergave wordt niet ondersteund en pogingen om gegevens bulksgewijs te importeren in een gepartitioneerde weergave mislukken.