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

Das systemeigene Unicode-Format ist hilfreich, wenn Informationen von einer Installation von 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.

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

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 mit dem Namen myTestUniNativeData in der AdventureWorks2008-Datenbank im dbo-Schema erstellt wird. Vor dem Ausführen dieser Beispiele müssen Sie diese Tabelle erstellen. Führen Sie im SQL Server Management Studio-Abfrage-Editor Folgendes aus:

USE AdventureWorks2008R2;
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 die Verwendung systemeigener Datentypen an.

-T

Gibt an, dass das Hilfsprogramm bcp eine Verbindung mit SQL Server mit einer vertrauenswürdigen Verbindung mithilfe von integrierter Sicherheit 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 AdventureWorks2008R2..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T

Verwenden von BULK INSERT für den Massenimport systemeigener 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 SQL Server Management Studio-Abfrage-Editor folgende Anweisung aus:

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