次の方法で共有


データ ファイルとフォーマット ファイルの使用

最も単純な一括コピー プログラムでは、次の処理が行われます。

  1. テーブルまたはビューからデータ ファイルへの一括コピー (BCP_OUT設定) を指定するbcp_initを呼び出します。

  2. bcp_execを呼び出して、一括コピー操作を実行します。

データ ファイルはネイティブ モードで作成されます。そのため、テーブルまたはビューのすべての列のデータは、データベースと同じ形式でデータ ファイルに格納されます。 その後、同じ手順を使用し、DB_OUTの代わりにDB_INを設定することで、ファイルをサーバーに一括コピーできます。 これは、ソース テーブルとターゲット テーブルの構造がまったく同じである場合にのみ機能します。 結果のデータ ファイルは、/n (ネイティブ モード) スイッチを使用して bcp ユーティリティに入力することもできます。

テーブルまたはビューから直接コピーするのではなく、Transact-SQL ステートメントの結果セットを一括コピーするには:

  1. bcp_initを呼び出して一括コピーアウトを指定しますが、テーブル名には NULL を指定します。

  2. eOption BCPHINTS に設定され、iValue が Transact-SQL ステートメントを含む SQLTCHAR 文字列へのポインターに設定されたbcp_controlを呼び出します。

  3. 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 、終了前のエラーの最大数、一括コピーを開始するファイル内の行、停止する行、バッチ サイズなどのオプションを設定します。

こちらもご覧ください

一括コピー操作の実行 (ODBC)