最も単純な一括コピー プログラムでは、次の処理が行われます。
データ ファイルはネイティブ モードで作成されます。そのため、テーブルまたはビューのすべての列のデータは、データベースと同じ形式でデータ ファイルに格納されます。 その後、同じ手順を使用し、DB_OUTの代わりにDB_INを設定することで、ファイルをサーバーに一括コピーできます。 これは、ソース テーブルとターゲット テーブルの構造がまったく同じである場合にのみ機能します。 結果のデータ ファイルは、/n (ネイティブ モード) スイッチを使用して bcp ユーティリティに入力することもできます。
テーブルまたはビューから直接コピーするのではなく、Transact-SQL ステートメントの結果セットを一括コピーするには:
bcp_initを呼び出して一括コピーアウトを指定しますが、テーブル名には NULL を指定します。
eOptionが BCPHINTS に設定され、iValue が Transact-SQL ステートメントを含む SQLTCHAR 文字列へのポインターに設定されたbcp_controlを呼び出します。
bcp_execを呼び出して、一括コピー操作を実行します。
Transact-SQL ステートメントには、結果セットを生成する任意のステートメントを指定できます。 Transact-SQL ステートメントの最初の結果セットを含むデータ ファイルが作成されます。 Transact-SQL ステートメントで複数の結果セットが生成された場合、一括コピーでは最初の後の結果セットは無視されます。
列データをテーブルとは異なる形式で格納するデータ ファイルを作成するには、 bcp_columns を呼び出して変更する列の数を指定し、書式を変更する列ごとに bcp_colfmt を呼び出します。 これは、 bcp_init を呼び出した後、 bcp_execを呼び出す前に行われます。 bcp_colfmt は、列のデータがデータ ファイルに格納される形式を指定します。 これは、一括コピーインまたは一括コピー時に使用できます。 bcp_colfmt を使用して、行ターミネータと列ターミネータを設定することもできます。 たとえば、データにタブ文字が含まれている場合は、 bcp_colfmt を使用してタブ文字を各列のターミネータとして設定することで、タブ区切りファイルを作成できます。
bcp_colfmtを一括コピーして使用する場合、bcp_colfmtの最後の呼び出しの後にbcp_writefmtを呼び出すことで、作成したデータ ファイルを記述するフォーマット ファイルを簡単に作成できます。
フォーマット ファイルで記述されたデータ ファイルから一括コピーする場合は、bcp_initした後、bcp_execする前にbcp_readfmtを呼び出してフォーマット ファイルを読み取ります。
bcp_control関数は、データ ファイルから SQL Server に一括コピーする場合にいくつかのオプションを制御します。 bcp_control 、終了前のエラーの最大数、一括コピーを開始するファイル内の行、停止する行、バッチ サイズなどのオプションを設定します。