データ ファイルとフォーマット ファイルの使用
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
最も単純な一括コピー プログラムでは次の操作を実行します。
データ ファイルはネイティブ モードで作成されるので、テーブルやビューのすべての列から取得したデータは、データベースと同じ形式でデータ ファイルに格納されます。 その後、同様の手順を使用して、このデータ ファイルをサーバーに一括コピーできます。ただし、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 は、終了前のエラーの最大数、一括コピーを開始するファイル内の行、停止する行、バッチ サイズなどのオプションを設定します。