Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten

Das systemeigene Unicode-Format ist hilfreich, wenn Informationen von einer Installation von MicrosoftSQL 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. Für Zeichendaten, wie z. B. char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max) und ntext, verwendet das systemeigene Unicode-Format das Unicode-Zeichendatenformat.

Die sql_variant-Daten, die in einer Datendatei im systemeigenen Unicode-Format als SQLVARIANT gespeichert werden, funktionieren auf die gleiche Weise wie in einer Datendatei im systemeigenen Format, mit der Ausnahme, dass Werte der Typen char und varchar in nchar und nvarchar konvertiert werden. Hierdurch verdoppelt sich der für die entsprechenden Spalten benötigte Speicherplatz. 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.

HinweisHinweis

Weitere Informationen zum systemeigenen Format finden Sie unter Verwenden des systemeigenen Formats zum Importieren oder Exportieren von Daten.

Befehlsoptionen für das systemeigene Unicode-Format

Sie können Daten im systemeigenen Unicode-Format in eine Tabelle importieren, indem Sie bcp, BULK INSERT oder INSERT ... SELECT * FROM OPENROWSET(BULK...) verwenden. Bei einem bcp-Befehl oder einer BULK INSERT-Anweisung können Sie das Datenformat in der Befehlszeile angeben. Bei der INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung müssen Sie das Datenformat in einer Formatdatei angeben.

Das systemeigene Unicode-Format wird von den folgenden Optionen unterstützt:

Befehl

Option

Beschreibung

bcp

-N

Bewirkt, dass das Dienstprogramm bcp das systemeigene Unicode-Format verwendet, das systemeigene (Datenbank-)Datentypen für alle nicht auf Zeichen basierenden Daten und das Unicode-Zeichendatenformat für alle Zeichendaten (char, nchar, varchar, nvarchar, text und ntext) verwendet.

BULK INSERT

DATAFILETYPE ='widenative'

Gibt an, dass das systemeigene Unicode-Format beim Massenimportieren von Daten verwendet werden soll.

Weitere Informationen finden Sie unter bcp (Dienstprogramm), BULK INSERT (Transact-SQL) oder OPENROWSET (Transact-SQL).

HinweisHinweis

Alternativ können Sie in einer Formatdatei eine Formatierung auf Feldbasis angeben. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten.

Beispiele

Die folgenden Beispiele veranschaulichen, wie systemeigene Daten mithilfe von bcp massenexportiert und die gleichen Daten mithilfe von BULK INSERT massenimportiert werden.

Beispieltabelle

Für die Beispiele ist es erforderlich, dass eine Tabelle namens myTestUniNativeData in der AdventureWorks-Beispieldatenbank unter dem dbo-Schema erstellt wird. Bevor Sie die Beispiele ausführen können, müssen Sie diese Tabelle erstellen. Führen Sie im SQL Server Management Studio-Abfrage-Editor Folgendes aus:

USE AdventureWorks;
GO
CREATE TABLE myTestUniNativeData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Führen Sie zum Auffüllen dieser Tabelle und zum Anzeigen der resultierenden Inhalte die folgenden Anweisungen aus:

INSERT INTO myTestUniNativeData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniNativeData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData

Verwenden von bcp für den Massenexport von systemeigenen Daten

Verwenden Sie zum Exportieren von Daten aus der Tabelle in die Datendatei bcp mit der Option out und den folgenden Qualifizierern:

Qualifizierer

Beschreibung

-N

Gibt die Verwendung systemeigener Datentypen an.

-T

Gibt an, dass das Dienstprogramm bcp eine Verbindung mit SQL Server mit einer vertrauenswürdigen Verbindung mithilfe von integrierter Sicherheit herstellt. Wird -T nicht angegeben, müssen Sie für eine erfolgreiche Anmeldung -U und -P angeben.

Das folgende Beispiel führt einen Massenexport von Daten im systemeigenen Format aus der myTestUniNativeData-Tabelle in eine neue Datendatei namens myTestUniNativeData-N.Dat aus. Geben Sie an der Eingabeaufforderung von Microsoft Windows Folgendes ein:

bcp AdventureWorks..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T

Verwenden von BULK INSERT für den Massenimport von systemeigenen Daten

Das folgende Beispiel verwendet BULK INSERT, um die Daten in der Datendatei myTestUniNativeData-N.Dat in die myTestUniNativeData-Tabelle zu importieren. Führen Sie im Abfrage-Editor von SQL Server Management Studio Folgendes aus:

USE AdventureWorks;
GO
BULK INSERT myTestUniNativeData 
    FROM 'C:\myTestUniNativeData-N.Dat' 
   WITH (DATAFILETYPE='widenative'); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;
GO