Share via


Verwenden von Datendateien und Formatdateien

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Das einfachste Massenkopierprogramm geht wie folgt vor:

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

  2. 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 mithilfe des Schalters /n (nativer Modus) in das bcp-Hilfsprogramm eingegeben werden.

So kopieren Sie den Resultset einer Transact-SQL-Anweisung anstelle direkt aus einer Tabelle oder Sicht:

  1. Rufen Sie bcp_init auf, um Massenkopiervorgänge anzugeben, geben Sie aber NULL für den Tabellennamen an.

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

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

Die Transact-SQL-Anweisung kann eine beliebige Anweisung sein, die ein Resultset generiert. Die Datendatei wird erstellt, die das erste Resultset der Transact-SQL-Anweisung enthält. Das Massenkopieren ignoriert alle Resultsets nach dem ersten, wenn die Transact-SQL-Anweisung mehrere Resultsets generiert.

Um eine Datendatei zu erstellen, 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 sollen, und rufen Sie dann bcp_colfmt für jede Spalte auf, deren Format Sie ändern möchten. Dies geschieht nach dem Aufrufen bcp_init , aber vor dem Aufrufen bcp_exec. bcp_colfmt gibt das Format an, in dem die Daten der Spalte in der Datendatei gespeichert werden. Sie kann beim Massenkopieren in oder aus verwendet werden. Sie können auch bcp_colfmt verwenden, um die Zeilen- und Spaltenabschlusszeichen festzulegen. Wenn Ihre Daten beispielsweise keine Registerkartenzeichen enthalten, können Sie eine Datei mit Tabulatortrennzeichen erstellen, indem Sie bcp_colfmt verwenden, um das Registerkartenzeichen als Abschlusszeichen für jede Spalte festzulegen.

Beim Massenkopieren und Verwenden von bcp_colfmt können Sie ganz einfach eine Formatdatei erstellen, die die von Ihnen erstellte Datendatei beschreibt, indem Sie bcp_writefmt nach dem letzten Aufruf von bcp_colfmt aufrufen.

Lesen Sie beim Massenkopiervorgang aus einer durch eine Formatdatei beschriebenen Datendatei die Formatdatei, indem Sie bcp_readfmt nach bcp_init aufrufen, aber vor bcp_exec.

Die bcp_control-Funktion steuert mehrere Optionen beim Massenkopieren in SQL Server aus einer Datendatei. bcp_control legt Optionen fest, z. B. die maximale Anzahl von Fehlern vor der Beendigung, die Zeile in der Datei, für die der Massenkopiervorgang gestartet werden soll, die Zeile, die beendet werden soll, und die Batchgröße.

Weitere Informationen

Durchführen von Massenkopiervorgängen (ODBC)