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.
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 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).
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 (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.
|
||
-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
Verwenden des Zeichenformats zum Importieren und Exportieren von Daten (SQL Server)
Verwenden des systemeigenen Formats zum Importieren oder Exportieren von Daten (SQL Server)
Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)