Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten
Es wird empfohlen, für die Massenübertragung von Daten zwischen mehreren Instanzen von Microsoft SQL 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.
Wichtig |
---|
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. 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) und OPENROWSET (Transact-SQL).
Hinweis |
---|
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 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 AdventureWorks2008R2-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 AdventureWorks2008R2;
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
Hinweis
Das Standard-Feldabschlusszeichen ist das Tabulator-Unicode-Zeichen (\t). Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen.
|
-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 AdventureWorks2008R2..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 AdventureWorks2008R2;
GO
BULK INSERT myTestUniCharData
FROM 'C:\myTestUniCharData-w.Dat'
WITH (
DATAFILETYPE='widechar',
FIELDTERMINATOR=','
);
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO