Freigeben über


Verwenden von Datendateien und Formatdateien

Das einfachste Massenkopierprogramm geht wie folgt vor:

  1. Es ruft bcp_init auf, um das Massenkopieren (BCP_OUT) aus einer Tabelle oder Sicht in eine Datendatei anzugeben.

  2. Es ruft bcp_exec auf, um den Massenkopiervorgang auszuführen.

Die Datendatei wird im systemeigenen Modus erstellt. Daher werden Daten aus allen Spalten in der Tabelle oder Sicht in der Datendatei im gleichen Format wie in der Datenbank gespeichert. Die Datei kann dann mit derselben Vorgehensweise auf einen Server massenkopiert werden, mit der Ausnahme, dass DB_IN statt DB_OUT festgelegt wird. Dies funktioniert jedoch nur, wenn sowohl die Quell- als auch die Zieltabellen genau dieselbe Struktur aufweisen. Die resultierende Datendatei kann auch an das bcp-Dienstprogramm übergeben werden, indem der Schalter /n (systemeigener Modus) verwendet wird.

So führen Sie einen Massenkopiervorgang des Resultsets einer Transact-SQL-Anweisung aus, anstatt direkt aus einer Tabelle oder Sicht zu kopieren:

  1. Rufen Sie bcp_init auf, um das Massenkopieren anzugeben, aber geben Sie NULL für den Tabellennamen an.

  2. Rufen Sie bcp_control mit eOption auf, wobei eOption auf BCPHINTS festgelegt ist, und rufen Sie iValue mit der Festlegung auf einen Zeiger auf eine SQLTCHAR-Zeichenfolge auf, die die Transact-SQL-Anweisung enthält.

  3. Rufen Sie bcp_exec auf, um den Massenkopiervorgang auszuführen.

Die Transact-SQL-Anweisung kann jede Anweisung sein, die ein Resultset generiert. Die Datendatei wird mit dem ersten Resultset der Transact-SQL-Anweisung erstellt. Das Massenkopieren ignoriert alle Resultsets nach dem ersten, wenn die Transact-SQL-Anweisung mehrere Resultsets generiert (wenn sie beispielsweise COMPUTE oder COMPUTE BY enthält).

Zum Erstellen einer Datendatei, in der Spaltendaten in einem anderen Format als in der Tabelle gespeichert werden, rufen Sie bcp_columns auf, um anzugeben, wie viele Spalten geändert werden. Rufen Sie dann bcp_colfmt für alle Spalten auf, deren Format Sie ändern möchten. Dies erfolgt nach dem Aufrufen von bcp_init, aber vor dem Aufrufen von bcp_exec. bcp_colfmt gibt das Format an, in dem die Spaltendaten in der Datendatei gespeichert werden. Es kann beim ein- oder ausgehenden Massenkopieren verwendet werden. Sie können auch bcp_colfmt verwenden, um Zeilen- und Spaltenabschlusszeichen festzulegen. Wenn Ihre Daten beispielsweise keine Tabulatorzeichen enthalten, können Sie eine durch Tabstopps getrennte Datei mithilfe von bcp_colfmt erstellen, um das Tabulatorzeichen als Abschlusszeichen der einzelnen Spalten festzulegen.

Beim Massenkopieren und Verwenden von bcp_colfmt können Sie leicht eine Formatdatei erstellen, die die Datendatei beschreibt, die Sie durch Aufrufen von bcp_writefmt nach dem letzten Aufruf von bcp_colfmt erstellt haben.

Beim Massenkopieren aus einer Datendatei, die von einer Formatdatei beschrieben wird, lesen Sie die Formatdatei durch Aufrufen von bcp_readfmt nach bcp_init, aber vor bcp_exec.

Die bcp_control-Funktion steuert verschiedene Optionen beim Massenkopieren in SQL Server aus einer Datendatei. bcp_control legt Optionen fest, z. B. die maximale Anzahl an Fehlern vor dem Abbruch, die Zeile in der Datei, in der das Massenkopieren startet, die Stoppzeile und die Batchgröße.