Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)

Das systemeigene 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. 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.

Befehlsoptionen für das systemeigene Unicode-Format

Sie können Daten im systemeigenen Unicode-Format in eine Tabelle importieren, indem Sie folgende Anweisungen verwenden: bcp, BULK INSERT oder INSERT ... SELECT * FROM OPENROWSET(BULK...). Für einen bcp-Befehl oder eine BULK INSERT-Anweisung können Sie das Datenformat in der Befehlszeile angeben. Für eine 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 Hilfsprogramm 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 (Hilfsprogramm), 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 (SQL Server).

Beispiele

Die folgenden Beispiele zeigen, wie ein Massenexport systemeigener Daten mithilfe von bcp und wie ein Massenimport derselben Daten mithilfe von BULK INSERT ausgeführt wird.

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 systemeigener 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 systemeigene Datentypen an.

-T

Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt. Wenn -T nicht angegeben ist, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.

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 Microsoft Windows-Eingabeaufforderung Folgendes ein:

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

Verwenden von BULK INSERT für den Massenimport systemeigener Daten

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

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

Verwandte Aufgaben

So verwenden Sie Datenformate für Massenimport oder Massenexport

Siehe auch

Verweis

bcp (Hilfsprogramm)

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Datentypen (Transact-SQL)