Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Das native Unicode-Format ist hilfreich, wenn Informationen von einer Installation von Microsoft SQL Server in eine andere kopiert werden müssen. Durch die Verwendung des systemeigenen Formats bei nicht auf Zeichen basierenden Daten kann Zeit eingespart werden, da die unnötige Konvertierung der Datentypen in und aus dem Zeichenformat entfällt. Die Verwendung des Unicode-Zeichenformats für alle Zeichendaten verhindert, dass es zum Verlust von erweiterten Zeichen beim Massenübertragen von Daten zwischen Servern mit unterschiedlichen Codepages kommt. Eine Datendatei im systemeigenen Unicode-Format kann von jeder Massenimportmethode gelesen werden.
Das systemeigene Unicode-Format wird für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL Server mithilfe einer Datendatei, die Sonderzeichen oder DBCS-Zeichen enthält, empfohlen. Für nicht auf Zeichen basierende Daten verwendet das systemeigene Unicode-Format systemeigene (Datenbank-)Datentypen. Bei Zeichendaten wie char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max)und ntextverwendet das native Unicode-Format das Unicode-Zeichendatenformat.
Die sql_variant Daten, die als SQLVARIANT in einer systemeigenen Unicode-Datendatei gespeichert werden, funktionieren auf die gleiche Weise wie in einer datendatei im nativen Format, mit der Ausnahme, dass Char - und Varchar-Werte in nchar und nvarchar konvertiert werden, wodurch die für die betroffenen Spalten erforderliche Speichermenge verdoppelt wird. Die ursprünglichen Metadaten bleiben erhalten, und die Werte werden zurück in die ursprünglichen Datentypen char und varchar konvertiert, wenn sie in eine Tabellenspalte massenimportiert werden.
Befehlsoptionen für das systemeigene Unicode-Format
Sie können Unicode native Formatdaten mithilfe von bcp, BULK INSERT oder OPENROWSET BULK in eine Tabelle importieren.
- Für einen bcp-Befehl oder eine BULK INSERT-Anweisung können Sie das Datenformat in der Anweisung angeben.
- Für eine OPENROWSET BULK-Anweisung müssen Sie das Datenformat in einer Formatdatei angeben.
Das native Unicode-Format wird durch die folgenden Befehlsoptionen unterstützt:
| Get-Help | Auswahlmöglichkeit | Beschreibung |
|---|---|---|
bcp |
-N |
Bewirkt, dass das Hilfsprogramm das bcp systemeigene Unicode-Format verwendet, das systemeigene Datentypen (Datenbank) für alle nicht charren Daten und Unicode-Zeichendaten für alle Zeichendaten (Zeichen, nchar, varchar, nvarchar, Text und ntext) verwendet. |
BULK INSERT |
DATAFILETYPE ='widenative' |
Verwendet das native Unicode-Format beim Massenimportieren von Daten |
OPENROWSET |
N/V | Muss eine Formatdatei verwenden |
Hinweis
Alternativ können Sie die Formatierung pro Feld in einer Formatdatei angeben. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).
Beispieltestbedingungen
Die Beispiele in diesem Thema basieren auf der Beispieltabelle myWidenative und der Formatdatei myWidenative.fmt. Ersetzen Sie die lokalen Dateipfade durch einen lokalen Dateipfad auf Ihrem System.
Beispieltabelle
Das folgende Skript erstellt eine Testdatenbank, eine Tabelle mit dem Namen myWidenative und füllt die Tabelle mit einigen Anfangswerten auf. Führen Sie die folgenden Transact-SQL-Vorgänge aus:
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;
Beispieldatei im Nicht-XML-Format
SQL Server unterstützt zwei Typen von Formatdateien: Nicht-XML- und XML-Format. Nicht-XML ist das ursprüngliche Format, das von früheren Versionen von SQL Server unterstützt wird. Ausführliche Informationen finden Sie unter Verwendung von Nicht-XML-Formatdateien (SQL Server ). Der folgende Befehl verwendet das bcp-Hilfsprogramm , um eine Nicht-XML-Formatdatei zu generieren, myWidenative.fmtbasierend auf dem Schema von myWidenative.
- Wenn Sie einen bcp-Befehl zum Erstellen einer Formatdatei verwenden möchten, geben Sie das
formatArgument an, und verwenden Sienuldas Argument anstelle eines Datendateipfads. - Die Formatoption erfordert auch die
-fOption. -
cwird verwendet, um Zeichendaten anzugeben. -
Twird verwendet, um eine vertrauenswürdige Verbindung mit integrierter Sicherheit anzugeben.
Geben Sie folgende Befehle an der Eingabeaufforderung ein:
bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N
REM Review file
Notepad D:\BCP\myWidenative.fmt
Wichtig
Stellen Sie sicher, dass Ihre Nicht-XML-Formatdatei mit einem Wagenrücklauf/Zeilenvorschub endet. Andernfalls wird Ihnen möglicherweise die folgende Fehlermeldung angezeigt:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Beispiele
Die folgenden Beispiele verwenden die Datenbank und formatieren die oben erstellten Dateien.
Verwenden des systemeigenen Formats "bcp" und "Unicode" zum Exportieren von Daten
Der -N Schalter und OUT Befehl.
Die in diesem Beispiel erstellte Datendatei wird in allen nachfolgenden Beispielen verwendet.
Geben Sie folgende Befehle an der Eingabeaufforderung ein:
bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N
REM Review results
NOTEPAD D:\BCP\myWidenative.bcp
Verwenden des systemeigenen Formats "bcp" und "Unicode" zum Importieren von Daten ohne Formatdatei
Der -N Schalter und IN Befehl.
Geben Sie folgende Befehle an der Eingabeaufforderung ein:
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
Verwenden des systemeigenen Formats "bcp" und "Unicode" zum Importieren von Daten mit einer Nicht-XML-Formatdatei
Die -N und -f Schalter und IN Befehl.
Geben Sie folgende Befehle an der Eingabeaufforderung ein:
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
Verwenden des nativen BULK INSERT- und Unicode-Formats ohne Formatdatei
Das DATAFILETYPE Argument.
Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwenden Sie BULK INSERT und das Unicode-Nativformat mit einer Nicht-XML-Formatdatei.
Das FORMATFILE Argument.
Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwenden Sie OPENROWSET und das nativen Unicode-Format mit einer Nicht-XML-Formatdatei.
Das FORMATFILE Argument.
Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwandte Aufgaben
So verwenden Sie Datenformate für den Massenimport oder Massenexport:
- Importieren von systemeigenen und Zeichenformatdaten aus früheren Versionen von SQL Server
- Verwenden des Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server)
- Verwenden des nativen Formats zum Importieren oder Exportieren von Daten (SQL Server)
- Verwenden des Unicode-Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server)