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 einheitlichen 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-Hilfsprogramm übergeben werden, indem der Schalter /n (einheitlicher 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. Beim Massenkopieren wird jedes Resultset nach dem ersten ignoriert, wenn die Transact-SQL-Anweisung mehrere Resultsets generiert.

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 legt das Format fest, in dem die Daten der Spalte 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.

Mit der bcp_control-Funktion werden mehrere Optionen beim Massenkopieren aus einer Datendatei in SQL Server gesteuert. bcp_control legt Optionen fest, wie etwa die maximale Anzahl der Fehler vor der Beendigung, die Zeilen in der Datei, in der der Massenkopiervorgang gestartet und beendet werden soll, sowie die Batchgröße.

Siehe auch

Konzepte

Durchführen von Massenkopiervorgängen (ODBC)