次の方法で共有


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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

最も単純な一括コピー プログラムでは次の操作を実行します。

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

  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)