Vorbereiten von Daten für den Massenexport oder -import

In diesem Abschnitt werden Überlegungen, die beim Planen für Massenexportvorgänge relevant sind, sowie die Anforderungen für Massenimportvorgänge erläutert.

HinweisHinweis

Falls Sie sich in Bezug auf das Formatieren einer Datendatei für den Massenimport nicht sicher sind, können Sie das Dienstprogramm bcp verwenden, um Daten aus der Tabelle in eine Datendatei zu exportieren. Die Formatierung jedes Datenfelds in dieser Datei weist die Formatierung auf, die für den Massenimport von Daten in die entsprechende Tabellenspalte erforderlich ist. Verwenden Sie dieselbe Datenformatierung für die Felder Ihrer Datendatei.

Überlegungen zum Datendateiformat für den Massenexport

Bevor Sie mithilfe des Befehls bcp einen Massenexportvorgang ausführen, sollten Sie Folgendes berücksichtigen:

  • Wenn Daten in eine Datei exportiert werden, erstellt der Befehl bcp die Datendatei automatisch mithilfe des angegebenen Dateinamens. Wenn dieser Dateinamen bereits verwendet wird, überschreiben die Daten, die in die Datendatei massenkopiert werden, den vorhandenen Inhalt der Datei.

  • Zum Massenexportieren aus einer Tabelle oder Sicht in eine Datendatei ist die SELECT-Berechtigung für die massenkopierte Tabelle oder Sicht erforderlich.

  • MicrosoftSQL Server kann parallele Scans verwenden, um Daten abzurufen. Daher ist normalerweise nicht sichergestellt, dass die Tabellenzeilen, die aus einer Instanz von SQL Server massenexportiert werden, sich in der Datendatei in einer bestimmten Reihenfolge befinden. Verwenden Sie die Option queryout für den Massenexport aus einer Abfrage, um sicherzustellen, dass massenexportierte Tabellenzeilen in der Datendatei in einer bestimmten Reihenfolge angezeigt werden, und geben Sie eine ORDER BY-Klausel an. Weitere Informationen finden Sie unter Exportieren von Daten aus einer Abfrage in eine Datendatei.

Anforderungen an das Datendateiformat für den Massenexport

Zum Importieren von Daten in eine Datendatei muss die Datei die folgenden grundlegenden Anforderungen erfüllen:

  • Die Datei muss ein Zeilen- und Spaltenformat aufweisen.
HinweisHinweis

Die Struktur der Datendatei muss nicht mit der Struktur der SQL Server-Tabelle übereinstimmen, da Spalten während des Massenimportprozesses ausgelassen oder neu geordnet werden können.

  • Die Daten in der Datendatei müssen ein unterstütztes Format aufweisen, z. B. ein Zeichen- oder systemeigenes Format.

  • Die Daten können ein Zeichenformat oder ein systemeigenes binäres Format, einschließlich Unicode, aufweisen.

  • Zum Importieren von Daten mithilfe des Befehls bcp, einer BULK INSERT-Anweisung oder einer INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung, die Zieltabelle muss bereits vorhanden sein.

  • Jedes Feld in der Datendatei muss mit der entsprechenden Spalte in der Zieltabelle kompatibel sein. Ein int-Feld kann z. B. nicht in eine datetime-Spalte geladen werden. Weitere Informationen finden Sie unter Verwenden von systemeigenen Formaten, Zeichen- oder Unicode-Formaten und Angeben von Datenformaten für die Kompatibilität mithilfe von bcp.

    HinweisHinweis

    Sie können den Befehl bcp mit dem Schalter -Ffirst_row und/oder dem Schalter -Llast_row verwenden, um anstelle der gesamten Datei eine Teilmenge von Zeilen anzugeben, die aus einer Datendatei importiert werden sollen. Weitere Informationen finden Sie unter bcp (Dienstprogramm).

  • Zum Importieren von Daten aus Datendateien mit Feldern fester Länge oder Breite müssen Sie eine Formatdatei verwenden. Weitere Informationen finden Sie unter Grundlegendes zu XML-Formatdateien und Beispiele für XML-Formatdateien.

  • CSV (Comma-Separated Value)-Dateien werden von SQL Server-Massenimportvorgängen nicht unterstützt. In manchen Fällen kann jedoch eine CSV-Datei als Datendatei für einen Massenimport von Daten in SQL Server verwendet werden. Das Feldabschlusszeichen einer CSV-Datei muss kein Komma sein. Um als Datendatei für einen Massenimport verwendet werden zu können, muss eine CSV-Datei den folgenden Einschränkungen entsprechen:

    • Datenfelder enthalten nie das Feldabschlusszeichen.

    • Keiner oder alle der Werte in einem Datenfeld sind in Anführungszeichen ("") eingeschlossen.

    Für den Massenimport von Daten aus einer Microsoft FoxPro- oder Visual FoxPro-Tabellendatei (.dbf) oder einer Microsoft Excel-Arbeitsblattdatei (.xls), müssen die Daten in eine CSV-Datei umgewandelt werden, die den vorangehenden Einschränkungen entspricht. Die Dateierweiterung lautet normalerweise .csv. Anschließend kann die Datei mit der Dateinamenerweiterung .csv als Datendatei in einem SQL Server-Massenimportvorgang verwendet werden.

    In 32-Bit-Systemen können CSV-Daten in eine SQL Server-Tabelle ohne Massenimportoptimierungen importiert werden, indem Sie OPENROWSET mit dem OLE DB-Anbieter für Jet verwenden. Jet behandelt Textdateien als Tabellen mit dem durch eine schema.ini-Datei, die sich im gleichen Verzeichnis wie die Datenquelle befindet, festgelegten Schema. Für CSV-Daten ist einer der Parameter in der Datei schema.ini "FORMAT=CSVDelimited". Für diese Lösung ist das Verständnis der Jet Test IISAMm-Vorgänge – die Verbindungszeichenfolgensyntax, Verwendung von schema.ini, Einstellungsoptionen für die Registrierung usw. – erforderlich. Die besten Informationsquellen hierfür sind die Microsoft Access-Hilfe und Knowledge Base (KB)-Artikel. Weitere Informationen finden Sie unter Initializing the Text Data Source Driver, How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases, HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases und How To Open Delimited Text Files Using the Jet Provider's Text IIsam.

Darüber hinaus ist Folgendes für den Massenimport von Daten aus einer Datendatei in eine Tabelle erforderlich:

  • Benutzer müssen über INSERT- und SELECT-Berechtigungen für die Tabelle verfügen. Benutzer müssen auch über eine ALTER TABLE-Berechtigung verfügen, wenn sie Optionen wie das Deaktivieren von Einschränkungen verwenden, für die DLL-Vorgänge (Data Definition Language) erforderlich sind.

  • Wenn Sie für das Massenimportieren von Daten BULK INSERT oder INSERT ... SELECT * FROM OPENROWSET(BULK...) verwenden, muss entweder das Sicherheitsprofil des SQL Server-Prozesses (wenn sich der Benutzer mit dem bereitgestellten SQL Server-Anmeldenamen anmeldet) oder die Microsoft Windows-Anmeldung, die beim Delegieren der Sicherheit verwendet wird, über Zugriff für Lesevorgänge auf die Datendatei verfügen. Darüber hinaus muss der Benutzer zum Lesen der Datei über die ADMINISTER BULK OPERATIONS-Berechtigung verfügen.

HinweisHinweis

Das Massenimportieren in eine partitionierte Sicht wird nicht unterstützt, und Versuche, einen Massenimport von Daten in eine partitionierte Sicht auszuführen, schlagen fehl.

Änderungsverlauf

Aktualisierter Inhalt

Informationen zum Importieren von CSV-Daten mithilfe des OLE DB-Anbieters für Jet hinzugefügt.