Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse in Microsoft Fabric
Tekenindeling wordt aanbevolen wanneer u gegevens bulksgewijs exporteert naar een tekstbestand dat moet worden gebruikt in een ander programma of wanneer u gegevens bulksgewijs importeert uit een tekstbestand dat door een ander programma wordt gegenereerd.
Tekenformaat gebruikt de tekengegevensindeling voor alle kolommen. Het opslaan van gegevens in tekenindeling is handig wanneer de gegevens worden gebruikt met een ander programma, zoals een spreadsheet, of wanneer de gegevens moeten worden gekopieerd naar een exemplaar van SQL Server van een andere databaseleverancier, zoals Oracle.
Opmerking
Wanneer u gegevens bulksgewijs overdraagt tussen exemplaren van SQL Server en het gegevensbestand Unicode-tekengegevens bevat, maar geen uitgebreide tekens of DBCS-tekens, gebruikt u de Unicode-tekenindeling. Zie Unicode-tekenindeling gebruiken voor het importeren of exporteren van gegevens (SQL Server) voor meer informatie.
Overwegingen voor het gebruik van tekenopmaak
Wanneer u tekenopmaak gebruikt, kunt u het volgende overwegen:
- Het hulpprogramma bcp scheidt standaard de tekengegevensvelden met het tabteken en beëindigt de records met het nieuwe regelteken. Zie Veld- en rijeindtekens opgeven (SQL Server) voor meer informatie over het opgeven van alternatieve afsluiters. 
- Standaard worden vóór het bulksgewijs exporteren of importeren van gegevens in de tekenmodus de volgende conversies uitgevoerd: - Richting van bulksgewijze bewerking - Conversie - Exporteren - Converteert gegevens naar tekenweergave. Indien expliciet aangevraagd, worden de gegevens geconverteerd naar de aangevraagde codepagina voor tekenkolommen. Als er geen codepagina is opgegeven, worden de tekengegevens geconverteerd met behulp van de OEM-codepagina van de clientcomputer. - Importeren - Converteert tekengegevens naar een systeemeigen weergave, indien nodig, en vertaalt de tekengegevens van de codepagina van de client naar de codepagina van een of meer doelkolommen. 
- Als u wilt voorkomen dat uitgebreide tekens tijdens de conversie verloren gaan, gebruikt u de Unicode-tekenindeling of geeft u een codepagina op. 
- Alle sql_variant gegevens die zijn opgeslagen in een bestand met tekenindeling, worden opgeslagen zonder metagegevens. Elke gegevenswaarde wordt geconverteerd naar tekenindeling , volgens de regels voor impliciete gegevensconversie. Wanneer de gegevens worden geïmporteerd in een sql_variant kolom, worden de gegevens geïmporteerd als teken. Wanneer de gegevens worden geïmporteerd in een kolom met een ander gegevenstype dan sql_variant, worden de gegevens geconverteerd van teken met behulp van impliciete conversie. Zie Gegevenstypeconversie (Database Engine) voor meer informatie over gegevensconversie. 
- Het hulpprogramma bcp exporteert geldwaarden als gegevensbestanden met vier cijfers na het decimaalteken en zonder scheidingstekens voor cijfers, zoals scheidingstekens voor komma's. Een geldkolom die de waarde - 1,234,567.123456bevat, wordt bijvoorbeeld bulksgewijs geëxporteerd naar een gegevensbestand als tekenreeks- 1234567.1235.
Opdrachtopties voor tekenopmaak
U kunt tekengegevens importeren in een tabel met bcp, BULK INSERT (Transact-SQL), of OPENROWSET (BULK). Voor een bcp-opdracht of BULK INSERT -instructie (Transact-SQL) kunt u de gegevensindeling opgeven in de instructie. Voor een OPENROWSET-instructie (BULK) moet u de gegevensindeling opgeven in een formaatbestand.
Tekenopmaak wordt ondersteund door de volgende opdrachtopties:
| Opdracht | Optie | Beschrijving | 
|---|---|---|
| bcp | -c | Zorgt ervoor dat het bcp-hulpprogramma tekengegevens gebruikt. 1 | 
| BULK INSERT | DATAFILETYPE ='char' | Gebruik tekenopmaak bij het bulksgewijs importeren van gegevens. | 
| OPENROWSET | Niet van toepassing. | Moet een indelingsbestand gebruiken | 
              1 Als u tekengegevens wilt laden in-c een indeling die compatibel is met eerdere versies van SQL Server-clients, gebruikt u de -V switch. Zie Gegevens in systeemeigen en tekenindeling importeren uit eerdere versies van SQL Servervoor meer informatie.
Opmerking
U kunt ook opmaak per veld opgeven in een indelingsbestand. Zie Bestanden opmaken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie.
Voorbeeldtestvoorwaarden
De voorbeelden in dit artikel zijn gebaseerd op de volgende tabel en opmaakbestand.
Voorbeeldtabel
Met het volgende script maakt u een testdatabase, een tabel met de naam myChar en vult u de tabel met enkele initiële waarden. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myChar
(
    PersonID SMALLINT NOT NULL,
    FirstName VARCHAR (25) NOT NULL,
    LastName VARCHAR (30) NOT NULL,
    BirthDate DATE,
    AnnualSalary MONEY
);
-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES (1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
       (2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
       (3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);
-- Review data
SELECT * FROM TestDatabase.dbo.myChar;
Voorbeeldbestand met niet-XML-indeling
SQL Server ondersteunt twee typen indelingsbestand: niet-XML-indeling en XML-indeling. De niet-XML-indeling is de oorspronkelijke indeling die wordt ondersteund door eerdere versies van SQL Server. Zie Niet-XML-indelingsbestanden (SQL Server) gebruiken voor meer informatie. De volgende opdracht maakt gebruik van het hulpprogramma bcp voor het genereren van een bestand met een niet-XML-indeling, myChar.fmt, op basis van het schema van myChar. Als u een bcp opdracht wilt gebruiken om een indelingsbestand te maken, geeft u het argument FORMAT op en gebruikt u nul in plaats van een pad naar een gegevensbestand. Voor de indelingsoptie is ook de -f optie vereist. Bovendien wordt in dit voorbeeld de kwalificatie c gebruikt om tekengegevens op te geven en T wordt gebruikt om een vertrouwde verbinding op te geven met geïntegreerde beveiliging.
Voer bij een opdrachtprompt de volgende opdracht in:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Belangrijk
Zorg ervoor dat uw niet-XML-bestand eindigt met een carriage return\line feed. Anders krijgt u mogelijk het volgende foutbericht:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Voorbeelden
In de volgende voorbeelden worden de database gebruikt en worden bestanden opgemaakt die eerder in dit artikel zijn gemaakt.
BCP en tekenindeling gebruiken om gegevens te exporteren
              -c schakeloptie en OUT opdracht.
Het gegevensbestand dat in dit voorbeeld is gemaakt, wordt gebruikt in alle volgende voorbeelden.
Voer bij een opdrachtprompt de volgende opdracht in:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
BCP en tekenindeling gebruiken om gegevens te importeren zonder een indelingsbestand
De -c schakeloptie en de IN opdracht. Voer bij een opdrachtprompt de volgende opdracht in:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
bcp en tekenformaat gebruiken om gegevens te importeren met een niet-XML-formaatbestand
De schakelaars -c en -f en de opdracht IN. Voer bij een opdrachtprompt de volgende opdracht in:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Gebruik BULK INSERT en karakterformaat zonder een indelingsbestand
Het DATAFILETYPE argument. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
    WITH (DATAFILETYPE = 'Char');
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
BULK INSERT en tekenformaat gebruiken met een niet-XML-formaatbestand
Dit is een voorbeeld van het FORMATFILE argument. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
    WITH (FORMATFILE = 'D:\BCP\myChar.fmt');
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
OPENROWSET en tekenindeling gebruiken met een niet-XML-indelingsbestand
Een voorbeeld van het FORMATFILE argument. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
INSERT INTO TestDatabase.dbo.myChar
SELECT * FROM OPENROWSET (
    BULK 'D:\BCP\myChar.bcp',
    FORMATFILE = 'D:\BCP\myChar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Gerelateerde taken
Om gegevensindelingen te gebruiken voor bulkimport of bulkexport
- Gegevens in systeemeigen en tekenindeling importeren uit eerdere versies van SQL Server
- Systeemeigen indeling gebruiken voor het importeren of exporteren van gegevens (SQL Server)
- Unicode-tekenindeling gebruiken om gegevens te importeren of exporteren (SQL Server)
- De systeemeigen Unicode-indeling gebruiken om gegevens te importeren of exporteren (SQL Server)