Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten

Es wird empfohlen, für die Massenübertragung von Daten zwischen mehreren Instanzen von MicrosoftSQL Server mithilfe einer Datendatei, die Sonderzeichen oder Zeichen aus Doppelbyte-Zeichensätzen (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 Verwenden des Zeichenformats zum Importieren und Exportieren von Daten.

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.

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. Bei einem bcp-Befehl oder einer BULK INSERT-Anweisung können Sie das Datenformat in der Befehlszeile angeben. Bei einer 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 (Dienstprogramm), BULK INSERT (Transact-SQL) und OPENROWSET (Transact-SQL).

HinweisHinweis

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

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 AdventureWorks-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 AdventureWorks;
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');
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData

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

Um Daten aus der Tabelle in die Datendatei zu exportieren, verwenden Sie bcp zusammen mit der out-Option 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.

-T

Gibt an, dass das Dienstprogramm 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 AdventureWorks..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 folgende Anweisung aus:

USE AdventureWorks;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO