Verwenden des systemeigenen Formats zum Importieren oder Exportieren von Daten (SQL Server)
Das systemeigene Format wird für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL Server mithilfe einer Datendatei empfohlen, die keinen erweiterten oder Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) enthält.
Hinweis |
---|
Für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL Server mithilfe einer Datendatei, die erweiterte Zeichen oder DBCS-Zeichen enthält, sollten Sie das systemeigene Unicode-Format verwenden. Weitere Informationen finden Sie unter Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server). |
Das systemeigene Format erhält die systemeigenen Datentypen einer Datenbank. Das systemeigene Format ist für die Hochgeschwindigkeitsübertragung von Daten zwischen SQL Server-Tabellen konzipiert. Wenn Sie eine Formatdatei verwenden, müssen Quell- und Zieltabelle nicht identisch sein. Die Datenübertragung besteht aus zwei Schritten:
Massenexportieren der Daten aus einer Quelltabelle in eine Datendatei
Massenimportieren der Daten aus der Datendatei in die Zieltabelle
Durch die Verwendung des systemeigenen Formats zwischen identischen Tabellen wird die unnötige Konvertierung von Datentypen in das und aus dem Zeichenformat vermieden und somit Zeit und Speicherplatz gespart. Um eine optimale Übertragungsrate zu erreichen, werden jedoch wenige Überprüfungen der Datenformatierung vorgenommen. Berücksichtigen Sie, um Probleme mit den geladenen Daten zu verhindern, die folgende Einschränkungsliste.
Einschränkungen
Um Daten im systemeigenen Format erfolgreich zu importieren, müssen folgende Punkte sichergestellt sein:
Die Datendatei liegt im systemeigenen Format vor.
Die Zieltabelle muss mit der Datendatei kompatibel sein (Spaltenanzahl, Datentyp, Länge, NULL-Status usw. müssen richtig sein), oder Sie müssen eine Formatdatei verwenden, um jedes Feld den entsprechenden Spalten zuzuordnen.
Hinweis Wenn Sie Daten aus einer Datei importieren, die nicht mit der Zieltabelle übereinstimmt, kann der Importvorgang zwar erfolgreich sein, aber die in die Zieltabelle eingefügten Datenwerte sind wahrscheinlich falsch. Das liegt daran, dass die Daten aus der Datei mithilfe des Formats der Zieltabelle interpretiert werden. Daher hat jede fehlende Übereinstimmung die Einfügung falscher Werte zur Folge. Eine derartige fehlende Übereinstimmung kann jedoch unter keinen Umständen logische oder physische Inkonsistenzen in der Datenbank verursachen.
Informationen zum Verwenden von Formatdateien finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).
Ein erfolgreicher Import beschädigt die Zieltabelle nicht.
Behandlung von Daten im systemeigenen Format durch bcp
Dieser Abschnitt enthält spezielle Überlegungen zum Exportieren und Importieren von Daten im systemeigenen Format durch das Hilfsprogramm bcp.
Nicht auf Zeichen basierende Daten
Das Hilfsprogramm bcp verwendet das interne binäre Datenformat von SQL Server, um nicht auf Zeichen basierende Daten aus einer Tabelle in eine Datendatei zu schreiben.
Daten vom Typ char oder varchar
Am Anfang jedes char- oder varchar-Felds fügt bcp die Präfixlänge hinzu.
Wichtig Wenn der einheitliche Modus verwendet wird, konvertiert das Hilfsprogramm bcp standardmäßig Zeichen aus SQL Server in OEM-Zeichen, bevor sie in eine Datendatei kopiert werden. Das Hilfsprogramm bcp konvertiert Zeichen aus einer Datendatei in ANSI-Zeichen, bevor der Massenimport der Zeichen in eine SQL Server-Tabelle ausgeführt wird. Während dieser Konvertierungen kann es zum Verlust von Daten mit erweiterten Zeichen kommen. Verwenden Sie für erweiterte Zeichen entweder das systemeigene Unicode-Format, oder geben Sie eine Codepage an.
Daten vom Typ sql_variant
Wenn sql_variant-Daten als SQLVARIANT in einer Datendatei im systemeigenen Format gespeichert werden, behalten die Daten alle Merkmale. Die Metadaten, die den Datentyp jedes Datenwerts aufzeichnen, werden zusammen mit dem Datenwert gespeichert. Diese Metadaten werden verwendet, um den Datenwert mit demselben Datentyp in einer sql_variant-Zielspalte neu zu erstellen.
Wenn der Datentyp der Zielspalte nicht sql_variant ist, werden alle Datenwerte unter Einhaltung der üblichen Regeln der impliziten Datenkonvertierung in den Datentyp der Zielspalte konvertiert. Wenn während der Datenkonvertierung ein Fehler auftritt, wird für den aktuellen Batch ein Rollback ausgeführt. Bei Werten vom Typ char und varchar, die zwischen sql_variant-Spalten übertragen werden, treten möglicherweise Probleme bei der Codepagekonvertierung auf.
Weitere Informationen zur Datenkonvertierung finden Sie unter Datentypkonvertierung (Datenbankmodul).
Befehlsoptionen für das systemeigene Format
Sie können Daten im systemeigenen Format unter Verwendung von bcp, BULK INSERT oder INSERT ... in eine Tabelle importieren. SELECT * FROM OPENROWSET(BULK...). 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 Format wird durch die folgenden Befehlszeilenoptionen unterstützt:
Command |
Option |
Beschreibung |
---|---|---|
bcp |
-n |
Veranlasst das Hilfsprogramm bcp, die systemeigenen Datentypen der Daten zu verwenden.1 |
BULK INSERT |
DATAFILETYPE = 'native' |
Verwendet die systemeigenen Datentypen (native oder widenative) der Daten. Beachten Sie, dass DATAFILETYPE nicht erforderlich ist, wenn eine Formatdatei die Datentypen angibt. |
1 Verwenden Sie zum Laden systemeigener Daten (-n) in ein Format, das mit früheren Versionen von SQL Server-Clients kompatibel ist, den Schalter -V. Weitere Informationen finden Sie unter Importieren von Daten aus früheren SQL Server-Versionen im systemeigenen Format oder im Zeichenformat.
Weitere Informationen finden Sie unter bcp (Hilfsprogramm), BULK INSERT (Transact-SQL) oder OPENROWSET (Transact-SQL).
Hinweis |
---|
Alternativ können Sie die Formatierung pro Feld in einer Formatdatei angeben. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server). |
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
Die Beispiele erfordern, dass eine Tabelle mit dem Namen myTestNativeData in der AdventureWorks-Beispieldatenbank unter dem Schema dbo erstellt wird. Bevor Sie die Beispiele ausführen können, müssen Sie diese Tabelle erstellen. Führen Sie im SQL Server Management Studio-Abfrage-Editor Folgendes aus:
USE AdventureWorks;
GO
CREATE TABLE myTestNativeData (
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 myTestNativeData(Col1,Col2,Col3)
VALUES(1,'DataField2','DataField3');
INSERT INTO myTestNativeData(Col1,Col2,Col3)
VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestNativeData
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 systemeigene Datentypen 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 anzumelden. |
Das folgende Beispiel führt einen Massenexport von Daten im systemeigenen Format aus der myTestNativeData-Tabelle in eine neue Datendatei namens myTestNativeData-n.Dat aus. Geben Sie an der Microsoft Windows-Eingabeaufforderung Folgendes ein:
bcp AdventureWorks..myTestNativeData out C:\myTestNativeData-n.Dat -n -T
Verwenden von BULK INSERT für den Massenimport systemeigener Daten
Im folgenden Beispiel wird BULK INSERT verwendet, um die Daten in der Datendatei myTestNativeData-n.Dat in die myTestNativeData-Tabelle zu importieren. Führen Sie im SQL Server Management Studio-Abfrage-Editor Folgendes aus:
USE AdventureWorks;
GO
BULK INSERT myTestNativeData
FROM 'C:\myTestNativeData-n.Dat'
WITH (DATAFILETYPE='native');
GO
SELECT Col1,Col2,Col3 FROM myTestNativeData
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 Unicode-Zeichenformats zum Importieren und Exportieren von Daten (SQL Server)
Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)
Siehe auch
Verweis
Konzepte
Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)