Delen via


Unicode Native Format gebruiken om gegevens te importeren of exporteren (SQL Server)

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

De systeemeigen Unicode-indeling is handig wanneer informatie moet worden gekopieerd van de ene Microsoft SQL Server-installatie naar een andere. Het gebruik van systeemeigen indeling voor niet-tekengegevens bespaart tijd, waardoor onnodige conversie van gegevenstypen naar en van tekenindeling wordt geëlimineerd. Het gebruik van Unicode-tekenindeling voor alle tekengegevens voorkomt verlies van uitgebreide tekens tijdens bulkoverdracht van gegevens tussen servers met behulp van verschillende codepagina's. Een gegevensbestand in de systeemeigen Unicode-indeling kan worden gelezen door elke methode voor bulkimport.

De systeemeigen Unicode-indeling wordt aanbevolen voor de bulkoverdracht van gegevens tussen meerdere exemplaren van SQL Server met behulp van een gegevensbestand met uitgebreide of DBCS-tekens. Voor niet-character-gegevens worden in de systeemeigen Unicode-indeling systeemeigen gegevenstypen (database) gebruikt. Voor tekengegevens, zoals char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max)en ntext, gebruikt de Unicode systeemeigen indeling de Unicode-tekengegevensindeling.

De sql_variant gegevens die zijn opgeslagen als een SQLVARIANT in een systeemeigen Unicode-gegevensbestand, werken op dezelfde manier als in een systeemeigen gegevensbestand, behalve dat teken en varchar waarden worden geconverteerd naar nchar- en nvarchar, waardoor de hoeveelheid opslagruimte die nodig is voor de betrokken kolommen wordt verdubbeld. De oorspronkelijke metagegevens blijven behouden en de waarden worden weer geconverteerd naar het oorspronkelijke teken en varchar gegevenstype wanneer bulksgewijs wordt geïmporteerd in een tabelkolom.

In dit onderwerp:
Commando-opties voor Unicode-native indeling
voorbeeldtestvoorwaarden
 ● voorbeeldtabel
 ● voorbeeldbestand zonder XML-indeling
voorbeelden
 ● BCP en Unicode Native Format gebruiken om gegevens te exporteren
 ● BCP en Unicode Native Format gebruiken om gegevens te importeren zonder een indelingsbestand
 ● BCP en Unicode Native Format gebruiken om gegevens te importeren met een niet-XML-indelingsbestand
 ● BULK INSERT en Unicode Native Format gebruiken zonder een formatteringsbestand
 ● BULK INSERT en Unicode Native Format gebruiken met een bestand zonder XML-indeling
 ● Gebruik van OPENROWSET en Unicode Native Format met een niet-XML-indelingsbestand
gerelateerde taken

Commando-opties voor Unicode systeemeigen indeling

U kunt systeemeigen Unicode-indelingsgegevens importeren in een tabel met behulp van bcp, BULK INSERT of INSERT ... SELECT * FROM OPENROWSET(BULK...). Voor een bcp-opdracht of een BULK INSERT-instructie kunt u de gegevensindeling opgeven in de instructie. Voor een INSERT ... SELECT * FROM OPENROWSET(BULK...) instructie moet u het gegevensformaat opgeven in een indelingsbestand.

De systeemeigen Unicode-indeling wordt ondersteund door de volgende opdrachtopties:

Bevelen Optie Beschrijving
bcp -N- Zorgt ervoor dat het hulpprogramma bcp de systeemeigen Unicode-indeling gebruikt, waarbij systeemeigen gegevenstypen (database) worden gebruikt voor alle niet-tekengegevens en unicode-tekengegevensindeling voor alle tekens (teken, nchar-, varchar-, nvarchar-, teksten ntext-) gegevens.
BULK INSERT DATAFILETYPE ='widenative' Maakt gebruik van de systeemeigen Unicode-indeling bij het bulksgewijs importeren van gegevens.
OPENROWSET N.V.T Moet een indelingsbestand gebruiken

Notitie

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.

Voorbeeld van testvoorwaarden

De voorbeelden in dit onderwerp zijn gebaseerd op de tabel en het indelingsbestand dat hieronder is gedefinieerd.

voorbeeldtabel

Met het onderstaande script maakt u een testdatabase, een tabel met de naam myWidenative 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.myWidenative ( 
	PersonID smallint NOT NULL,
	FirstName nvarchar(25) NOT NULL,
	LastName nvarchar(30) NOT NULL,
	BirthDate date,
	AnnualSalary money
);

-- Populate table
INSERT TestDatabase.dbo.myWidenative
VALUES 
(1, N'ϴAnthony', N'Grosse', '02-23-1980', 65000.00),
(2, N'❤Alica', N'Fatnowna', '11-14-1963', 45000.00),
(3, N'☎Stella', N'Rossenhain', '03-02-1992', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myWidenative;

voorbeeldbestand zonder 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. Raadpleeg niet-XML-bestanden (SQL Server) voor gedetailleerde informatie. Met de volgende opdracht wordt het hulpprogramma bcp gebruikt om een bestand met een niet-XML-indeling te genereren, myWidenative.fmt, op basis van het schema van myWidenative. Als u een opdracht bcp wilt gebruiken om een indelingsbestand te maken, geeft u de -indeling op argument en gebruikt u nul- in plaats van een gegevensbestandspad. Voor de indelingsoptie is ook de optie -f vereist. Bovendien wordt in dit voorbeeld de kwalificatie c gebruikt om tekengegevens op te geven en wordt T- gebruikt om een vertrouwde verbinding op te geven met geïntegreerde beveiliging. Voer bij een opdrachtprompt de volgende opdrachten in:

bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

REM Review file
Notepad D:\BCP\myWidenative.fmt

Belangrijk

Zorg ervoor dat het bestand in niet-XML-indeling eindigt met een carriage return\line feed. Anders krijgt u waarschijnlijk 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 onderstaande voorbeelden worden de database en de bestandsformaten gebruikt die hierboven zijn gemaakt.

BCP en Unicode Native Format gebruiken om gegevens te exporteren

-N schakelaar en OUT opdracht. Opmerking: het gegevensbestand dat in dit voorbeeld is gemaakt, wordt in alle volgende voorbeelden gebruikt. Voer bij een opdrachtprompt de volgende opdrachten in:

bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

REM Review results
NOTEPAD D:\BCP\myWidenative.bcp

BCP en Unicode Native Format gebruiken om gegevens te importeren zonder een indelingsbestand

-N schakeloptie en IN opdracht. Voer bij een opdrachtprompt de volgende opdrachten in:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

Het gebruik van bcp- en Unicode-systeemeigen indeling voor het importeren van gegevens met een niet-XML-indelingsbestand

-N en -f schakelopties en IN opdracht. Voer bij een opdrachtprompt de volgende opdrachten in:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -f D:\BCP\myWidenative.fmt -T -N

REM Review results is SSMS

Gebruik van BULK INSERT en Unicode Native Format zonder een indelingsbestand

argument DATAFILETYPE. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
	FROM 'D:\BCP\myWidenative.bcp'
	WITH (
		DATAFILETYPE = 'widenative'
		);

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

BULK INSERT en Unicode Native Format gebruiken met een bestand zonder XML-indeling

FORMATFILE argument. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
   FROM 'D:\BCP\myWidenative.bcp'
   WITH (
		FORMATFILE = 'D:\BCP\myWidenative.fmt'
		);

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

OPENROWSET en Unicode-native indeling gebruiken met een niet-XML-bestandsformaat

FORMATFILE argument. Voer de volgende Transact-SQL uit in Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative;  -- for testing
INSERT INTO TestDatabase.dbo.myWidenative
	SELECT *
	FROM OPENROWSET (
		BULK 'D:\BCP\myWidenative.bcp', 
		FORMATFILE = 'D:\BCP\myWidenative.fmt'  
		) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

Het gebruiken van gegevensindelingen voor bulkimport of bulkexport

Zie ook

bcp Utility
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
gegevenstypen (Transact-SQL)