Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten (SQL Server)

Es wird empfohlen, für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL Server mithilfe einer Datendatei, die Sonderzeichen oder Zeichen aus dem Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) enthält, das Unicode-Zeichenformat zu verwenden. Mit dem Unicode-Zeichenformat können Daten von einem Server mithilfe einer Codepage exportiert werden, wenn sich diese Codepage von der Codepage unterscheidet, die der Client verwendet, der den Vorgang ausführt. In solchen Fällen bietet die Verwendung des Unicode-Zeichenformats folgende Vorteile:

  • Wenn es sich bei den Quell- und Zieldaten um Unicode-Datentypen handelt, bleiben bei Verwendung des Unicode-Zeichenformats alle Zeichendaten erhalten.

  • Wenn es sich bei den Quell- und Zieldaten nicht um Unicode-Datentypen handelt, wird durch die Verwendung des Unicode-Datenformats der Verlust von Sonderzeichen in Bezug auf die Quelldaten minimiert, die am Ziel nicht dargestellt werden können.

Datendateien im Unicode-Zeichenformat folgen den Konventionen für Unicode-Dateien. Die ersten zwei Bytes der Datei sind Hexadezimalzahlen (0xFFFE). Diese Bytes dienen als Markierungen für die Bytereihenfolge, in der angegeben wird, ob in der Datei das höherwertige Byte zuerst oder zuletzt gespeichert wird.

Wichtiger HinweisWichtig

Damit eine Formatdatei mit einer Datendatei mit Unicode-Zeichen verwendet werden kann, müssen alle Eingabefelder Unicode-Textzeichenfolgen sein (d. h., entweder Unicode-Zeichenfolgen einer festen Länge oder Unicode-Zeichenfolgen mit Abschlusszeichen).

Die sql_variant-Daten, die in einer Datendatei im Unicode-Zeichenformat gespeichert sind, verhalten sich wie Daten in einer Datendatei im Zeichenformat, außer dass die Daten als nchar-Daten und nicht als char-Daten gespeichert sind. Weitere Informationen zum Zeichenformat finden Sie unter Sortierung und Unicode-Unterstützung.

Wenn Sie andere Feld- und Zeilenabschlusszeichen als die standardmäßig durch das Unicode-Zeichenformat vorgegebenen verwenden möchten, informieren Sie sich unter Angeben von Feld- und Zeilenabschlusszeichen (SQL Server).

Befehlsoptionen für das Unicode-Zeichenformat

Sie können Daten im Unicode-Zeichenformat 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 Unicode-Zeichenformat wird von den folgenden Befehlszeilenoptionen unterstützt:

Befehl

Option

Beschreibung

bcp

-w

Verwendet das Unicode-Zeichenformat

BULK INSERT

DATAFILETYPE = 'widechar'

Verwendet das Unicode-Zeichenformat beim Massenimport von Daten

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 veranschaulichen den Massenexport von Unicode-Zeichendaten mithilfe von bcp und den Massenimport derselben Daten mithilfe von BULK INSERT.

Beispieltabelle

Für die Beispiele muss in der AdventureWorks2012-Beispieldatenbank unter dem dbo-Schema eine Tabelle namens myTestUniCharData erstellt werden. Bevor Sie die Beispiele ausführen können, müssen Sie diese Tabelle erstellen. Führen Sie Folgendes aus, um diese Tabelle im SQL Server Management Studio-Abfrage-Editor zu erstellen:

USE AdventureWorks2012;
GO
CREATE TABLE myTestUniCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Um diese Tabelle aufzufüllen und den sich ergebenden Inhalt anzuzeigen, führen Sie die folgenden Anweisungen aus:

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

Verwenden von "bcp" für den Massenexport von Unicode-Zeichendaten

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

Qualifizierer

Beschreibung

-w

Gibt das Unicode-Zeichenformat an

-t ,

Gibt ein Komma (,) als Feldabschlusszeichen an.

HinweisHinweis

Das Standard-Feldabschlusszeichen ist das Tabulator-Unicode-Zeichen (\t). Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen (SQL Server).

-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 anmelden zu können.

Im folgenden Beispiel wird ein Massenexport von Daten im Unicode-Zeichenformat aus der myTestUniCharData-Tabelle in eine neue Datendatei ausgeführt. Diese Datendatei heißt myTestUniCharData-w.Dat und verwendet das Komma (,) als Feldabschlusszeichen. Geben Sie an der Eingabeaufforderung von Microsoft Windows Folgendes ein:

bcp AdventureWorks2012..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

Verwenden von BULK INSERT für den Massenimport von Unicode-Zeichendaten

Im folgenden Beispiel wird BULK INSERT zum Importieren der Daten aus der Datendatei myTestUniCharData-w.Dat in die myTestUniCharData-Tabelle verwendet. Das nicht standardmäßige Feldabschlusszeichen (,) muss in der Anweisung deklariert werden. Führen Sie im SQL Server Management Studio-Abfrage-Editor Folgendes aus:

USE AdventureWorks2012;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
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)

Konzepte

Sortierung und Unicode-Unterstützung