bcp ユーティリティは、ユーザーが指定した形式で、データを Microsoft® SQL Server™ 2000 とデータ ファイルとの間でコピーします。
構文
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[\instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
database_name
指定したテーブルまたはビューを含むデータベースの名前です。指定しないと、ユーザーの既定データベースになります。
owner
テーブルまたはビューの所有者の名前です。一括コピー操作を実行するユーザーが指定のテーブルまたはビューを所有している場合、owner は省略可能です。owner の指定が省略され、一括コピー操作を実行するユーザーが指定のテーブルまたはビューを所有していない場合は、Microsoft® SQL Server™ 2000 からエラー メッセージが返され、一括コピー操作は取り消されます。
table_name
データを SQL Server にコピーする (in オプション) 場合はコピー先のテーブルの名前、データを SQL Server からコピーする (out オプション) 場合はコピー元のテーブルの名前です。
view_name
SQL Server にデータをコピーする (in) 場合はコピー先のビューを指定し、SQL Server からコピーする (out) 場合はコピー元のビューを指定します。すべての列が同じテーブルを参照しているビューのみが、コピー先のビューとして使用できます。データをビューにコピーするときの制約の詳細については、「」を参照してください。
query
結果セットを返す Transact-SQLのクエリです。SELECTステートメントで COMPUTE句を指定した場合のように、クエリが複数の結果セットを返す場合、最初の結果セットだけがデータ ファイルにコピーされます。以降の結果セットはコピーされません。クエリ全体を二重引用符で囲んでください。クエリ内に組み込まれるものは、単一引用符で囲みます。クエリからデータを一括コピーする場合には、queryout も指定します。
in | out | queryout | format
一括コピーする方向を指定します。in は、ファイルからデータベース テーブルまたはビューにコピーします。out は、データベース テーブルまたはビューからファイルにコピーします。queryout は、クエリからデータの一括コピーを行う場合に指定します。format オプションは、指定したオプション (-n、-c、-w、-6、-N のいずれか) とテーブルまたはビューの区切り記号に基づいてフォーマット ファイルを作成します。format を使用する場合、-f オプションも指定する必要があります。
注 Microsoft SQL Server 6.5 の bcp ユーティリティの場合、sql_variant 型または bigint 型のデータを含むテーブルへの一括コピーはサポートされません。
data_file
テーブルまたはビューをディスクとの間で一括コピーする場合に使用するデータ ファイルのフル パスです。SQL Server にデータを一括コピーする場合は、データ ファイルには指定したテーブルまたはビューにコピーするデータが含まれます。SQL Server からデータを一括コピーする場合は、データ ファイルにはテーブルまたはビューからコピーしたデータが含まれます。パスは、1 文字から 255 文字までです。
-m max_errors
一括コピー操作を取り消す前に発生することのできる最大エラー数を指定します。bcp でコピーできない行は無視され、エラーとしてカウントされます。このオプションが指定されない場合のデフォルトは 10 になります。
-f format_file
同じテーブルに対して前回 bcp を実行したときに保存した応答を含むフォーマット ファイルのフル パスを指定します。format オプションで作成したフォーマット ファイルを使用してデータを一括コピーする場合は、このオプションを使用します。フォーマット ファイルの作成は任意です。形式に関する質問のプロンプトを表示した後、bcp は応答をフォーマット ファイルに保存するかどうかたずねます。デフォルトのファイル名は Bcp.fmt です。データを一括コピーする場合、bcp はフォーマット ファイルを参照できます。したがって、前回行った形式に関する質問の応答を対話的に再入力する必要はありません。このオプションを使用せず、-n、-c、-w、-6、-N のいずれも指定しない場合、bcp からフォーマット情報の入力が求められます。
-e err_file
bcp がファイルからデータベースに転送できなかった行を格納するエラー ファイルのフル パスを指定します。エラー メッセージは、bcp からユーザーのワークステーションに送られます。このオプションを指定しないと、エラー ファイルは作成されません。
-F first_row
一括コピー開始行の行番号を指定します。既定値は、指定データ ファイルの開始行を表す 1 です。
-L last_row
一括コピー最終行の行番号を指定します。既定値は、指定データ ファイルの最終行を表す 0 です。
-b batch_size
一括コピーするデータの行数を指定します。それぞれのバッチは、1 回のトランザクションでサーバーにコピーされます。失敗した場合、SQL Server では各バッチのトランザクションをコミットまたはロールバックします。既定では、指定したデータ ファイルのすべてのデータが一括コピーされます。このオプションは -h "ROWS_PER_BATCH = bb" オプションと共には使用しないでください。
-n
データのネイティブ (データベース) データ型を使用して一括コピー操作を実行します。このオプションを使用すると、各フィールドごとにプロンプトが表示されません。ネイティブ値が使用されます。
-c
文字データ型を使用して一括コピー操作を実行します。このオプションを使用すると、各フィールドごとにプロンプトが表示されません。格納型 char、プレフィクスなし、フィールド区切り文字 \t (タブ)、行終端文字 \n (改行文字) が使用されます。
-w
Unicode 文字を使用して一括コピー操作を実行します。このオプションを使用すると、各フィールドごとにプロンプトが表示されません。格納型 nchar、プレフィクスなし、フィールド区切り文字 \t (タブ)、行終端文字 \n (改行文字) がデフォルトで使用されます。このオプションは、SQL Server 6.5 またはそれ以前のバージョンでは使用できません。
-N
文字以外のデータについてはデータベースのネイティブなデータ型を使用し、文字データについては Unicode 文字を使用して、一括コピー操作を実行します。-w オプションの代わりにこのオプションを使用すると、高いパフォーマンスが得られます。このオプションは、データ ファイルを使用して SQL Server から別の SQL Server にデータを転送する場合に使用します。各フィールドごとにプロンプトは表示されません。パフォーマンスの高いネイティブモードを利用して ANSI の拡張文字を含むデータを転送する場合は、このオプションを使用します。-N は SQL Server 6.5 またはそれ以前のバージョンでは使用できません。
-V (60 | 65 | 70)
以前のバージョンの SQL Server のデータ型を使用して一括コピー操作を実行します。このオプションは、文字 (-c) またはネイティブ (-n) 形式で使用します。このオプションを使用すると、各フィールドごとにプロンプトが表示されません。既定値が使用されます。たとえば、ODBC ではもはやサポートされていないが、SQL Server 6.5 bcp ユーティリティでサポートされている日付形式を SQL Server 2000 に一括コピーするには、-V 65 パラメータを使用します。
重要 SQL Server からデータ ファイルに一括コピーする場合、-V が指定されていても、SQL Server 6.0 または SQL Server 6.5 の datetime 型 (日付時刻型) や smalldatetime 型 (短精度日付時刻型) のデータ形式は生成されません。日付は常に ODBC の形式で記述されます。さらに、SQL Server 6.5 およびそれ以前のバージョンでは NULL 値を許す bit データをサポートしていないので、bit の列には NULL 値の代わりに 0 値が記述されます。
-6
SQL Server 6.0 または SQL Server 6.5 のデータ型を使用して一括コピー操作を実行します。旧バージョンとの互換性を維持するためにだけサポートされます。代わりに V オプションを使用します。
-q
bcp ユーティリティと SQL Server のインスタンスとの接続の中で、SET QUOTED_IDENTIFIERS ON ステートメントを実行します。名前にスペースや引用符が含まれるデータベース、所有者、テーブル、またはビューを指定する場合に、このオプションを使用します。3 つの要素から成るテーブル名またはビュー名全体を、二重引用符 (" ") で囲みます。
-C code_page
旧バージョンとの互換性を維持するためにだけサポートされます。代わりに、フォーマット ファイル内の列ごとに、または対話型の bcp で照合名を指定します。
データ ファイルにあるデータのコード ページを指定します。文字コードが 127 を超えるかまたは 32 未満である文字を含む char、varchar、または text 列がデータに含まれる場合にだけ code_page は関係します。
| コード ページ値 | 説明 |
| ACP | ANSI/Microsoft Windows® (ISO 1252)。 |
| OEM | クライアントが使用するデフォルトのコード ページ。-C が指定されていない場合、これは bcp が使用するデフォルトのコード ページになります。 |
| RAW | コード ページの変換は行われません。したがって、これは最も速いオプションです。 |
| <value> | 850 などの特定のコード ページ番号。 |
-t field_term
フィールド終端文字を指定します。既定値は、\t (タブ文字) です。デフォルトのフィールド終端文字を無効にする場合、このパラメータを使用します。
-r row_term
行終端文字を指定します。既定値は、\n (改行文字) です。デフォルトの行終端文字を無効にする場合、このパラメータを使用します。
-i input_file
対話モードで一括コピーを実行した (-n、-c、-w、-6、または -N が指定されていない) ときの各フィールドごとのコマンド プロンプトへの応答を含む応答ファイル名を指定します。
-o output_file
コマンド プロンプトからリダイレクトされた bcp からの出力を受け取るファイル名を指定します。
-a packet_size
サーバーとの間で送信されるネットワーク パケットごとのバイト数を指定します。サーバー設定オプションは、SQL Server Enterprise Manager または sp_configure システム ストアド プロシージャを使用して設定できます。しかし、このオプションを使用すれば、サーバー設定オプションを個別に無効にできます。packet_size の有効値は 4096 ~ 65535 バイトです。既定値は 4096 です。
パケット サイズを大きくすると、一括コピーのパフォーマンスを向上させることができます。より大きなサイズのパケットを要求したが、許可されない場合、既定値が使用されます。bcp が作成するパフォーマンス統計は、使用したパケット サイズを示します。
-S server_name[\instance_name]
接続先の SQL Server のインスタンスを指定します。サーバー上の SQL Server の既定のインスタンスに接続する場合は、server_name を指定します。サーバー上の SQL Server 2000 の名前付きインスタンスに接続する場合は、server_name\instance_name を指定します。サーバーが指定されない場合は、ローカル コンピュータ上の SQL Server の既定のインスタンスに接続されます。ネットワーク上のリモート コンピュータから bcp を実行するときは、このオプションが必要です。
-U login_id
SQL Server への接続に使用されるログイン ID を指定します。
-P password
ログイン ID のパスワードを指定します。このオプションを指定しないと、bcp はパスワードを問い合わせます。また、このオプションをコマンド プロンプトの最後にパスワードなしで使用すると、デフォルトのパスワード (NULL) が使用されます。
-T
bcp がネットワーク ユーザーのセキュリティ資格情報を使用して信頼関係接続で SQL Server に接続することを指定します。login_id および password は必要ありません。
-v
bcp ユーティリティ バージョン番号と著作権に関する情報を報告します。
-R
通貨、日付、時刻のデータを SQL Server に一括コピーする場合に、クライアント コンピュータのロケール設定に適合した地域別設定を使用することを指定します。既定の設定では、地域別設定は無視されます。
-k
一括コピー操作時、空の列には、挿入される列の既定値ではなく、NULL 値を保持すること指定します。
-E
ID 列の値がインポートするファイル内に存在していることを指定します。-E を指定しない場合、インポートされるデータ ファイルの ID 列の値は無視され、SQL Server 2000 はテーブルの作成時に指定された seed と増分の値に基づいて一意の値を自動的に割り当てます。データ ファイルにテーブルまたはビュー内の ID 列の値が含まれない場合は、フォーマット ファイルを使って、データのインポート時にテーブルまたはビュー内の ID 列を飛ばすことを指定します。SQL Server 2000 では自動的に一意な値をこの列に割り当てます。詳細については、「」を参照してください。
-h "hint [,...n]"
データをテーブルに一括コピーするときに使用するヒントを指定します。SQL Server 6.x またはそれ以前のバージョンにデータを一括コピーする場合は、このオプションは使用できません。
| ヒント | 説明 |
| ORDER (column [ASC | DESC] [,...n]) | データ ファイルのデータの並べ替え。ロードするデータをテーブル上のクラスタ化インデックスにしたがって並べ替えると、一括コピーのパフォーマンスが向上します。異なる順序でデータ ファイルをソートするか、またはテーブルにクラスタ化インデックスがない場合、ORDER ヒントは無視されます。与えられた列の名前は、コピー先のテーブル内で有効な列である必要があります。既定では、bcp はデータ ファイルはソートされていないと仮定します。 |
| ROWS_PER_BATCH = bb | 各バッチあたりのデータ行数 (bb)。-b を指定しない場合に使用します。データ ファイル全体が 1 つのトランザクションとしてサーバーに送られます。サーバーは、bb の値に応じて一括コピーの負荷を最適化します。ROWS_PER_BATCH の既定値はありません。 |
| KILOBYTES_PER_BATCH = cc | バッチごとのデータのキロバイト数 (K) (cc)。KILOBYTES_PER_BATCH の既定値はありません。 |
| TABLOCK | 一括コピー操作時は、テーブル レベルのロックを行います。一括コピー操作時だけロックすることにより、テーブル ロックの競合を少なくするので、このヒントはパフォーマンスを大幅に向上させます。テーブルにインデックスがなく、TABLOCK が指定されている場合、複数のクライアントが同時に 1 つのテーブルをロードすることができます。既定では、ロック動作はテーブル オプション table lock on bulk load によって決定されます。 |
| CHECK_CONSTRAINTS | 一括コピー操作時に table_name に対するすべての制約を確認します。既定では、制約は無視されます。 |
| FIRE_TRIGGERS | in 引数と一緒に指定されている場合、一括コピーの操作時に、コピー先のテーブル上で定義されている挿入トリガを実行します。FIRE_TRIGGERS が指定されていない場合は、挿入トリガは実行されません。FIRE_TRIGGERS は、out、queryout、および format 引数に対しては無視されます。 |