bcp ユーティリティ

対象者:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticsアナリティクスプラットフォームシステム(PDW)Microsoft FabricにおけるSQLデータベース

一括コピー プログラム ユーティリティ (bcp) は、SQL Server のインスタンスとユーザー指定の形式でデータ ファイルの間でデータを一括コピーします。

bcp ユーティリティを使用して、多数の新しい行を SQL Server テーブルにインポートするか、テーブルからデータ ファイルにデータをエクスポートします。 このユーティリティでは Transact-SQL の知識は必要ありません。ただし、queryout オプションと同時に使う場合はその知識が必要になります。 テーブルにデータをインポートするには、そのテーブル用に作成されたフォーマット ファイルを使用するか、テーブルの構造とその列に対して有効なデータの型を理解する必要があります。

システムにインストールされている bcp のバージョン、システム要件、bcp の取得方法の詳細については、「 bcp ユーティリティをダウンロードしてインストールする」を参照してください。

Note

bcp データ ファイルには、スキーマや形式の情報は含まれません。 bcp を使用してデータをバックアップし、後でソース テーブルを削除または変更する場合は、データをインポートするために同じテーブル定義またはフォーマット ファイルが必要です。

bcp 構文に使用される構文規則については、Transact-SQL 構文規則 (Transact-SQL) を参照してください。

bcp の使用方法

コマンドの例を含む bcp の使用方法については、「 bcp ユーティリティの使用方法」を参照してください。

Linux および macOS で bcp を使用する

macOS および Linux にコマンド ライン ツールをインストールする方法については、「Linux に sqlcmd および bcp SQL Server コマンド ライン ツールをインストールする」を参照してください。

Linux および macOS での bcp に関する考慮事項

  • フィールド ターミネータはタブ (\t) です。

  • 行末文字は改行 (\n) です。

  • SQL Server から SQL Server への転送には、ネイティブ形式 (-n) を使用します。 文字形式 (-c) は、データが SQL Server 以外のシステムに入り込む場合、またはデータ ファイルに拡張文字を含めてはならない場合にのみ使用します。 詳細については、「 文字モードとネイティブ モードのベスト プラクティス」を参照してください。

  • コマンドライン引数でバックスラッシュ (\) を引用符で囲むかエスケープする必要があります。 たとえば、改行をカスタム行ターミネータとして指定するには、次のいずれかのメカニズムを使用します。

    • -r\\n
    • -r"\n"
    • -r'\n'

TDS 8.0 のサポート

SQL Server 2025 (17.x) では 、bcp ユーティリティの TDS 8.0 サポートが導入されています。

構文

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -P password ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ server_name [ \instance_name ] ] ]
    [ -t field_term ]
    [ -T ]
    [ -U login_id ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

コマンド ライン オプション

次の表に、 bcp で使用できるコマンド ライン オプションと、それらがサポートするオペレーティング システムを示します。

コマンド ライン オプション Windows でサポートされています Linux および macOS でサポートされています
オブジェクトと転送モード
[database_name.]スキーマ。{table_name | view_name | "query"} はい はい
{indata_file | outdata_file | queryoutdata_file | format nul} はい はい
-q はい はい
接続と認証
-S [server_name[\instance_name]] はい はい
-d database_name はい はい
-U login_id はい はい
-P パスワード はい はい
-G Microsoft Entra 認証 はい はい
-D はい はい
-K application_intent はい はい
-l login_timeout はい はい
-T はい はい
-Y[s| m| o] はい 1 はい 1
データ表現
-c はい はい
-C { ACP |OEM |RAW | code_page } はい いいえ
-n はい はい
-N はい いいえ
-w はい はい
-z いいえ はい 2
ファイルの書式設定
-f format_file はい はい
-x はい いいえ
バッチ処理とパフォーマンス
-a packet_size はい はい
-b batch_size はい はい
-h"hint [,...n]" はい いいえ
-m max_errors はい はい
-F first_row はい はい
-L last_row はい はい
-r row_term はい はい
-t field_term はい はい
値の処理
-k はい はい
-E はい はい
ファイル I/O とログ記録
-i input_file はい いいえ
-o output_file はい いいえ
-e err_file はい はい
互換性とバージョン管理
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) はい いいえ
-u はい 1 はい 1
その他のオプション
-R はい はい
-v はい はい

1 SQL Server 2025 (17.x) に付属する bcp バージョン 18 以降が必要です。
2 ODBC 18.6.1.1 以降のバージョン。

オブジェクトと転送モード

database_name

指定したテーブルまたはビューを含むデータベースの名前。 このパラメーターを指定しない場合は、ユーザーの既定のデータベースが使用されます。

-d で明示的にデータベース名を指定することもできます。

schema

テーブルまたはビューの所有者の名前。 操作を実行するユーザーが指定のテーブルまたはビューを所有している場合、schema は省略可能です。 スキーマを指定せず、操作を実行しているユーザーが指定したテーブルまたはビューを所有していない場合、SQL Server はエラー メッセージを返し、操作は取り消されます。

table_name

データを SQL Server にインポートする (in) 場合はインポート先のテーブルの名前、データを SQL Server からエクスポートする (out) 場合はエクスポート元のテーブルの名前。

view_name

データを SQL Server にコピーする (in) 場合はコピー先のビューの名前、データを SQL Server からコピーする (out) 場合はコピー元のビューの名前。 コピー先 (in) として使用する場合、ビューは、すべての列が同じテーブルを参照している場合にのみサポートされます。 ビューがソース (out) として使用されている場合、この制限は適用されません。 ビューにデータをコピーする際の制限についての詳細は、「INSERT」を参照してください。

"query"

結果セットを返す Transact-SQL クエリ。 クエリから複数の結果セットが返される場合、最初の結果セットのみがデータ ファイルにコピーされ、それ以降の結果セットは無視されます。 クエリは二重引用符で、クエリに埋め込まれたものは単一引用符で囲みます。 また、クエリからデータを一括コピーするときに queryout も指定する必要があります。

ストアド プロシージャ内で参照されるテーブルのすべてが bcp ステートメントの実行前に存在する場合に限り、クエリはストアド プロシージャを参照できます。 たとえば、ストアド プロシージャにより一時テーブルが生成される場合、この一時テーブルは実行時にだけ利用でき、ステートメントの実行時には利用できないため、 bcp ステートメントは失敗します。 このような場合、ストアド プロシージャの結果をテーブルに挿入し、 bcp を使用してテーブルからデータ ファイルにデータをコピーすることを検討してください。

ファイルからデータベース テーブルまたはビューにデータをコピーします。 一括コピーの方向を指定します。

外に出る

データベース テーブルまたはビューからファイルにデータをコピーします。 一括コピーの方向を指定します。

既存のファイルを指定すると、ファイルは上書きされます。 bcp ユーティリティは、データを抽出するときに、空の文字列を null として表し、null 文字列を空の文字列として表します。

data_file

データ ファイルの完全なパス。 SQL Server にデータを一括インポートする場合、データ ファイルには、指定したテーブルまたはビューにコピーするデータが含まれます。 SQL Server からデータを一括エクスポートする場合、データ ファイルにはテーブルまたはビューからコピーされたデータが含まれます。 パスは、1 文字から 255 文字までです。 データ ファイルに含めることができる行の数は最大 2^63 - 1 です。

queryout

クエリからデータをコピーし、クエリからデータを一括コピーする場合にのみ指定する必要があります。

format

指定されたオプション (-n-c-w、または -N) とテーブルやビューの区切り記号に基づいて、フォーマット ファイルを作成します。 データを一括コピーするとき、bcp コマンドはフォーマット ファイルを参照することができるため、フォーマット情報を対話的に再入力する必要がなくなります。 format オプションには -f オプションが必要です。XML フォーマット ファイルを作成するには、-x オプションも必要です。 詳細については、「 bcp を使用したフォーマット ファイルの作成 (SQL Server)」を参照してください。 値として nul を指定する必要があります (format nul)。

-q

SET QUOTED_IDENTIFIER ON ユーティリティと SQL Server のインスタンスの間の接続で、 ステートメントを実行します。 名前に空白や単一引用符が含まれるデータベース、所有者、テーブル、またはビューを指定する場合に、このオプションを使用します。 3 部構成のテーブルまたはビュー名全体を引用符 ("") で囲みます。

空白や単一引用符を含むデータベース名を指定するには、-q オプションを使用する必要があります。

-q は、-d に渡される値には適用されません。

詳細については、この記事の 「解説 」セクションを参照してください。

接続と認証

-S [server_name[\instance_name]]

接続する SQL Server インスタンスの名前を指定します。または、を使用する場合は DSN を指定します。

サーバーを指定しない場合、 bcp ユーティリティはローカル コンピューター上の SQL Server の既定のインスタンスに接続します。 このオプションは、ネットワーク上のリモート コンピューターまたはローカルの名前付きインスタンスから bcp コマンドを実行する場合に必要です。 サーバー上にある SQL Server の既定のインスタンスに接続するには、 server_nameのみを指定します。 SQL Server の名前付きインスタンスに接続するには、 <server_name>\<instance_name>を指定します。

-d database_name

接続先のデータベースを指定します。 既定では、 bcp は既定のデータベースに接続します。 -d <database_name>と 3 部構成の名前 (database_name.schema.table、bcp に最初のパラメーターとして渡されます) を指定すると、データベース名を 2 回指定できないため、エラーが発生します。 database_name がハイフン (-) またはスラッシュ (/) で始まる場合は、-d とデータベース名の間に空白を入れないでください。

-U login_id

SQL Serverへの接続に使用されるログイン ID を指定します。

-P パスワード

ログイン ID のパスワードを指定します。 このオプションを使用しない場合は、 bcp コマンドによってパスワードの入力が求められます。 コマンド プロンプトの最後でパスワードなしでこのオプションを使用する場合、 bcp は既定のパスワード (NULL) を使用します。

Important

空白のパスワードは使用しないでください。 強力なパスワードを使用してください。

パスワードをマスクする場合は、-P オプションを -U オプションと共に指定しないでください。 代わりに、 bcp-U オプションやその他のスイッチ ( -Pを指定しない) と共に指定した後、 Enter キーを押すと、コマンドによってパスワードの入力が求められます。 この方法を使用すると、入力時にパスワードが確実にマスクされます。

password がハイフン (-) またはスラッシュ (/) で始まる場合は、-Ppassword 値の間に空白を入れないでください。

Linux および macOS では、-Gなしで -U オプションと共に使用する場合、-Pは Microsoft Entra アクセス トークン (v17.8 以降のバージョン) を含むファイルを指定します。 トークン ファイルは UTF-16LE (BOM なし) 形式である必要があります。 詳細については、「 bcp での Microsoft Entra ID による認証」を参照してください。

-G

適用対象: Azure SQL Database、Azure SQL Managed Instance、Microsoft Fabric の SQL データベース、Azure Synapse Analytics、SQL Server 2022 (16.x) 以降のバージョン。

このスイッチは、ユーザーが Microsoft Entra ID で認証されることを指定するためにクライアントによって使用されます。 -G スイッチには、bcp バージョン 14.0.3008.27 以降のバージョンが必要です。 バージョンを判断するには、 bcp -vを実行します。 詳細については、「 SQL Database での Microsoft Entra 認証の使用」または「Microsoft Fabric の SQL Database での Azure Synapse Analytics または 認証」を参照してください。

bcp での Microsoft Entra 認証の詳細については、「 bcp での Microsoft Entra ID による認証」を参照してください。

-D

bcp -S オプションに渡された値が、データ ソース名 (DSN) として解釈されるようにします。 -D は、コマンド ライン上の任意の場所に表示できます。 -S に対する相対的な順序付けは関係ありません。

DSN を使用すると、次のことができます。

  • コマンド ラインを簡略化するためのドライバー オプションを埋め込みます。
  • コマンド ラインからアクセスできないドライバー オプション ( MultiSubnetFailoverなど) を適用します。
  • 機密性の高い資格情報がコマンド ライン引数として検出されないようにします。

詳細については、「sqlcmd と bcp での DSN のサポート」を参照してください。

-K application_intent

アプリケーションがサーバーに接続するときのワークロードのタイプを宣言します。 指定できる値は、ReadOnlyだけです。 -Kを指定しない場合、bcp ユーティリティは Always On 可用性グループ内のセカンダリ レプリカへの接続をサポートしません。 詳細については、「Always On 可用性グループのセカンダリ レプリカに読み取り専用の負荷を移す」を参照してください。

-l login_timeout

ログインのタイムアウトを指定します。 -l オプションでは、サーバーへの接続の試行時に、SQL Server へのログインがタイムアウトするまでの秒数を指定します。 既定のログイン タイムアウトは 15 秒です。 ログイン タイムアウトは、0 から 65,534 の数値にする必要があります。 指定した値が数値でない場合、またはその範囲に収まらない場合は、 bcp によってエラー メッセージが生成されます。 値が 0 の場合は、タイムアウトが無期限であることを示します。

-T

bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL Server に接続することを指定します。 ネットワーク ユーザーのセキュリティ資格情報 (login_idpassword) は必要ありません。 -Tを指定しない場合は、正常に接続するために-U-Pを指定する必要があります。

Important

-Tは、Windows 統合信頼接続を使用して SQL Server に接続する場合にのみ使用します。 Azure SQL Database または Azure Synapse Analytics に接続する場合、 -T (Windows 統合認証) はサポートされていません。 Azure サービスまたは SQL Server 2022 (16.x) 以降のバージョンに対する Microsoft Entra 認証については、 -G を使用します ( bcp での Microsoft Entra ID による認証を参照)。

-Y[s|m|o]

適用対象: SQL Server 2025 (17.x) に付属する bcp バージョン 18 以降のバージョン。

接続時にネットワーク上で TLS 暗号化が使用されるかどうかを指定します。 -Y は、 o ( Optionalの場合)、 m ( Mandatory、既定値)、または s ( Strictの場合) です。 -Yを含めない場合は、-Ym (Mandatoryの場合) が既定値です。

-u

適用対象: SQL Server 2025 (17.x) に付属する bcp バージョン 18 以降のバージョン。

サーバー証明書を信頼します。 接続の暗号化オプションと共に使用すると、自己署名サーバー証明書を使用した暗号化が有効になります。

データ表現

-c

文字データ型を使用して操作を実行します。 このオプションは、各フィールドに対してプロンプトを表示しません。 ストレージの種類として char をプレフィックスなしで使用し、フィールド区切り記号として \t (タブ文字) を使用し、行ターミネータとして \r\n (改行文字) を使用します。 -c は、-w と互換性がありません。

詳細については、「文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。

ベスト プラクティスについては、「 文字モードとネイティブ モードのベスト プラクティス」を参照してください。

-C { ACP |OEM |RAW | code_page }

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

データ ファイル内のデータのコード ページを指定します。 code_page は、データに charvarchartext 列 (文字値が 127 より大きいか、32 未満) が含まれている場合にのみ当てはまります。

65001 オプションが照合順序またはコード ページの指定よりも優先される場合を除き、書式ファイル内の各列の照合順序名を指定します。

コード ページ値 Description
ACP ANSI/Microsoft Windows (ISO 1252)。
OEM クライアントが使用する既定のコード ページです。 このコード ページは、 -Cを指定しない場合の既定値です。
RAW コード ページの変換は行われません。 変換が行われないため、このオプションが最も高速です。
<code_page> 特定のコードページ番号 (例えば 850)。

SQL Server 2016 (13.x) より前のバージョンでは、コード ページ 65001 (UTF-8 エンコード) はサポートされていません。 バージョン 13 以降では、UTF-8 エンコードを SQL Serverの前のバージョンにインポートできます。

-n

データのネイティブ (データベース) データ型を使用して一括コピー操作を実行します。 このオプションは、各フィールドに対してプロンプトを表示しません。 ネイティブ値を使用します。

詳細については、「ネイティブ形式を使用したデータのインポートまたはエクスポート」を参照してください。

ベスト プラクティスについては、「 文字モードとネイティブ モードのベスト プラクティス」を参照してください。

-N

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

文字以外のデータについてはデータベースのネイティブなデータ型を使用し、文字データについては Unicode 文字を使用して、一括コピー操作を実行します。 -w オプションの代わりにこのオプションを使用すると、高いパフォーマンスが得られます。このオプションは、データ ファイルを使用して SQL Server のインスタンスから別のインスタンスにデータを転送する場合に使用します。 フィールドごとにプロンプトは表示されません。 ANSI 拡張文字を含むデータを転送し、ネイティブ モードのパフォーマンスを利用する場合は、このオプションを使用します。

詳細については、「Unicode ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。

データをエクスポートした後で、 を指定して -N を実行して同じテーブル スキーマにそのデータをインポートした場合、Unicode 以外の固定長の文字の列 (char(10) など) があると、切り捨ての警告が表示されることがあります。

警告は無視してかまいません。 この警告を解決する 1 つの方法は、-n ではなく -N を使うことです。

-w

Unicode 文字を使用して一括コピー操作を実行します。 このオプションは、各フィールドに対してプロンプトを表示しません。 ストレージの種類として nchar 、プレフィックスなし、フィールド区切り記号として \t (タブ文字)、行ターミネータとして \n (改行文字) を使用します。 -w は、-c と互換性がありません。

詳細については、「 Unicode 文字形式を使用してデータをインポートまたはエクスポートする (SQL Server)」を参照してください。

-z

適用対象: bcp (ODBC)、Linux、macOS のみ。 Windows はサポートされていません。

bcp ユーティリティでベクター データ型のサポートを有効にします。 現在、この機能は既定で無効になっています。 無効にすると、ベクター データが JSON float 配列文字列としてインポートまたはエクスポートされます。 有効になっている場合、および SQL Server 2025 (17.x) 以降のバージョンに接続すると、ベクター データがネイティブ ベクター バイナリでインポートまたはエクスポートされます。

ファイルの書式設定

-f format_file

フォーマット ファイルの完全パスを指定します。 このオプションの意味は、オプションが使用されている環境によって次のように異なります。

  • -f オプションでformatを使用すると、指定したテーブルまたはビューに対して指定したformat_fileが作成されます。 XML フォーマット ファイルを作成するには、-x オプションも指定します。 詳細については、「 bcp を使用したフォーマット ファイルの作成 (SQL Server)」を参照してください。

  • -f または in オプションでoutを使用する場合は、既存のフォーマット ファイルが必要です。

    Note

    in または out オプションでフォーマット ファイルを使用することは省略可能です。 -f オプションを指定せず、-n-c-w、または-Nを指定しない場合、コマンドは書式情報を求め、応答をフォーマット ファイルに保存できます。 既定のファイル名は bcp.fmt

format_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-fformat_file 値の間に空白を入れないでください。

-x

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

このオプションは、format および -fformat_file オプションと共に使用します。 既定の XML 以外のフォーマット ファイルではなく、XML ベースのフォーマット ファイルが生成されます。 -x オプションは、データのインポートまたはエクスポート時に機能しません。 format-fformat_file の両方を指定せずに使用すると、エラーが生成されます。

バッチ処理とパフォーマンス

-a packet_size

クライアントがサーバーとの間で送受信するネットワーク パケットあたりのバイト数を指定します。 SQL Server Management Studio または sp_configure システム ストアド プロシージャを使用して、このサーバー構成オプションを設定します。 ただし、このオプションを使用すると、サーバー構成オプションを個別にオーバーライドできます。 packet_size は 4,096 バイトから 65,535 バイトまでです。 既定値は、4096 です。

パケット サイズを大きくすると、一括コピー操作のパフォーマンスが向上する可能性があります。 より大きなパケットを要求しても、サーバーに許可できない場合は、既定値が使用されます。 bcp ユーティリティによって生成されるパフォーマンス統計には、使用されたパケット サイズが表示されます。

-b batch_size

一括インポートするデータの行数を指定します。 コミットされる前に、各バッチはすべてのバッチをインポートする個別のトランザクションとしてインポートおよび記録されます。 既定では、 bcp はデータ ファイル内のすべての行を 1 つのバッチとしてインポートします。 複数のバッチに行を分散するには、データ ファイルの行数よりも少ない batch_size を指定します。 あるバッチのトランザクションが失敗した場合、現在のバッチにおける挿入操作のみがロールバックされます。 コミットされたトランザクションによって既にインポートされたバッチは、後のエラーの影響を受けられません。

-b-h "ROWS_PER_BATCH=<bb>" ヒントは相互に排他的です。 -b でバッチ処理を明示的に制御する場合はを使用するか、ROWS_PER_BATCHを使用して、データを 1 つのトランザクションとして送信するときにサーバー オプティマイザーをヒントします。

-h "ヒント [, ... n]"

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

テーブルまたはビューにデータを一括インポートする際に使用するヒントまたはヒントを指定します。

  • ORDER ( [ASC | DESC] [, ...n])

    データ ファイルのデータの並べ替え順序です。 一括インポートのパフォーマンスは、インポートするデータがテーブルのクラスター化インデックスに従って並べ替えられた場合に向上します (存在する場合)。 データ ファイルが別の順序で並べ替えられている場合、つまり、クラスター化インデックス キーの順序以外の場合、またはテーブルにクラスター化インデックスがない場合、 ORDER 句は無視されます。 指定する列名は、変換先テーブルの有効な列名である必要があります。 既定では、 bcp はデータ ファイルの並べ替えが行われていないことを前提としています。 最適な一括インポートのため、 SQL Server では、インポートするデータが並べ替えられているかどうかも検証されます。

  • ROWS_PER_BATCH = bb

    各バッチあたりのデータ行数 ( bb) です。 -bを指定しないと、データ ファイル全体が 1 つのトランザクションとしてサーバーに送信される場合に使用されます。 サーバーでは、bb の値に応じて一括読み込みの負荷が最適化されます。 既定では、 ROWS_PER_BATCH は不明です。

  • KILOBYTES_PER_BATCH = cc

    バッチごとのデータの概算キロバイト数 (KB) です ( cc)。 既定では、 KILOBYTES_PER_BATCH は不明です。

  • TABLOCK

    一括読み込み操作中に一括更新テーブル レベルのロックを取得することを指定します。それ以外の場合は、行レベルのロックが取得されます。 ヒントにより、一括コピー操作中にロックを保持することでテーブルのロック競合が減少し、結果としてパフォーマンスが大幅に向上します。 テーブルにインデックスがなく、 TABLOCK が指定されている場合は、複数のクライアントから同時にテーブルを読み込むことができます。 既定では、テーブル オプション table lock on bulkload によってロック動作が決定されます。 詳細については、「 sp_tableoption」を参照してください。

    Note

    ターゲット テーブルがクラスター化列ストア インデックスの場合、複数の同時実行クライアントによる読み込みに TABLOCK ヒントは必要ありません。各同時実行スレッドにはインデックス内に個別の行グループが割り当てられ、データが読み込まれるためです。 詳細については、「 列ストア インデックス: 概要」を参照してください。

  • CHECK_CONSTRAINTS

    一括インポート操作中、対象テーブルまたはビューに対するすべての制約を検証します。 CHECK_CONSTRAINTS ヒントがないと、CHECK制約とFOREIGN KEY制約は無視され、操作後、テーブルの制約は信頼されていないとマークされます。

    Note

    UNIQUE制約、 PRIMARY KEY制約、および NOT NULL 制約が常に適用されます。

    テーブル全体の制約は、任意の時点で必ず検証してください。 一括インポート操作の前にテーブルが空でない場合、制約を再検証するコストは、増分データに CHECK 制約を適用するコストを超える可能性があります。 そのため、通常、増分一括インポート中に制約チェックを有効にすることができます。

    入力データに制約違反の行が含まれている場合などは、制約を無効 (既定の動作) にできます。 CHECK制約を無効にすると、データをインポートし、Transact-SQL ステートメントを使用して無効なデータを削除できます。

    Note

    -m max_errors スイッチは、制約チェックには適用されません。

  • FIRE_TRIGGERS

    このオプションを in 引数と共に指定すると、コピー先テーブルで定義されているすべての挿入トリガーは、一括コピー操作中に実行されます。 FIRE_TRIGGERSを指定しない場合、挿入トリガーは実行されません。 FIRE_TRIGGERS は、 outqueryout、および format 引数では無視されます。

-m max_errors

bcp 操作が取り消される前に発生可能な構文エラーの最大数を指定します。 構文エラーは、対象となるデータ型へのデータの変換エラーを意味しています。 max_errorsの合計では、制約違反など、サーバーが検出できるエラーのみが除外されます。

bcp ユーティリティでコピーできない行は無視され、1 つのエラーとしてカウントされます。 このオプションを含めない場合、既定値は 10 です。

Note

money -mbigint データ型を変換する場合、 オプションは適用されません。

-F first_row (最初の行)

テーブルからエクスポートする最初の行、またはデータ ファイルからインポートする最初の行の番号を指定します。 このパラメーターには、0 より大きい値 (>) が (<) より小さいか、行の合計数と等しい値が必要です。 このパラメーターを指定しない場合、既定値はファイルの最初の行です。

first_row には、2^63-1 以下の正の整数を指定できます。 -F first_row では、1 から始まる番号が使用されます。

-L 最終行

テーブルからエクスポートする最後の行、またはデータ ファイルからインポートする最後の行の番号を指定します。 このパラメーターには、0 より大きい値 (>) が (<) より小さいか、最後の行の数と等しい値が必要です。 このパラメーターを指定しない場合、既定値はファイルの最後の行です。

last_row には、2^63-1 以下の正の整数を指定できます。

-r row_term

行ターミネータを指定します。 既定値は \n (改行文字) です。 既定の行ターミネータをオーバーライドする場合、このパラメーターを使用します。 詳細については、「 フィールドターミネータと行ターミネータの指定 (SQL Server)」を参照してください。

bcp コマンドでは、行ターミネータを 16 進数表記で指定すると、値は 0x00 で切り捨てられます。 たとえば、0x410041 を指定した場合は、0x41 が使われます。

row_term がハイフン (-) またはスラッシュ (/) で始まる場合は、-rrow_term 値の間に空白を入れないでください。

-t field_term

フィールド ターミネータを指定します。 既定値は \t (タブ文字) です。 既定のフィールド ターミネータをオーバーライドする場合、このパラメーターを使用します。 詳細については、「 フィールドターミネータと行ターミネータの指定 (SQL Server)」を参照してください。

bcp コマンドでは、フィールド ターミネータを 16 進数表記で指定すると、値は 0x00 で切り捨てられます。 たとえば、0x410041 を指定した場合は、0x41 が使われます。

field_term がハイフン (-) またはスラッシュ (/) で始まる場合は、-tfield_term 値の間に空白を入れないでください。

値の処理

-k

空の列に対して既定値を挿入するのではなく、操作中に null 値を保持することを指定します。 詳細については、「一括インポート中の NULL または既定値の保持 (SQL Server)」を参照してください。

-E

操作で、インポートされたデータ ファイルの ID 値を ID 列に使用することを指定します。 -Eを指定しない場合、SQL Server はインポートするデータ ファイル内のこの列の ID 値を無視し、テーブルの作成時に指定されたシード値と増分値に基づいて一意の値を自動的に割り当てます。 詳細については、「DBCC CHECKIDENT」を参照してください。

データ ファイルにテーブルまたはビューの ID 列の値が含まれていない場合は、フォーマット ファイルを使用して、データのインポート時にテーブルまたはビューの ID 列をスキップするように指定します。 SQL Server では、列に一意の値が自動的に割り当てられます。

-E オプションには、特別なアクセス許可が必要です。 詳細については、後の「解説」を参照してください。

ファイル I/O とログ記録

-i input_file

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

応答ファイルの名前を指定します。 このファイルには、対話型モード (-n-c-w、または指定されていない -N ) を使用して一括コピー操作を実行するときに、各データ フィールドのコマンド プロンプトの質問に対する応答が含まれます。

input_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-iinput_file 値の間に空白を入れないでください。

-o 出力ファイル

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

コマンド プロンプトからリダイレクトされた出力を受け取るファイル名を指定します。

output_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-ooutput_file 値の間に空白を入れないでください。

-e err_file

bcp ユーティリティがファイルからデータベースに転送できなかったすべての行を格納するエラー ファイルの完全なパスを指定します。 bcp コマンドからのエラー メッセージは、ユーザーのワークステーションに送られます。 このオプションを使用しない場合、エラー ファイルは作成されません。

err_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-eerr_file 値の間に空白を入れないでください。

互換性とバージョン管理

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

適用対象: Windows のみ。 Linux および macOS ではサポートされていません。

以前のバージョンの SQL Serverのデータ型を使用して一括コピー操作を実行します。 このオプションを使用すると、フィールドごとにプロンプトが表示されません。既定値が使用されます。

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) および SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x)

たとえば、SQL Server 2000 (8.x) ではサポートされていないが、以降のバージョンで導入された型のデータを生成するには、 -V80 オプションを使用します。

詳細については、「 以前のバージョンの SQL Server からのネイティブ形式データおよび文字形式データのインポート」を参照してください。

その他のオプション

-R

bcp ユーティリティが、クライアント コンピューターのロケール設定に定義されている地域形式を使用して、通貨、日付、時刻のデータを SQL Server に一括コピーすることを指定します。 既定では、 bcp はリージョン設定を無視します。

-v

bcp ユーティリティのバージョン番号と著作権に関する情報を報告します。

注釈

  • bcp ユーティリティは、サポートされているすべてのバージョンの SQL Server と互換性のあるネイティブ データ ファイルをサポートします。

  • bcp ユーティリティは、エラー メッセージの最初の 512 バイトのみを表示します。

Permissions

bcp out操作には、ソース テーブルSELECTアクセス許可が必要です。

bcp in操作では、ターゲット テーブルに対するSELECTINSERTのアクセス許可が最小限に抑えられます。 さらに、次のいずれかの条件に該当する場合は、 ALTER TABLE アクセス許可が必要です。

  • 制約が存在し、 CHECK_CONSTRAINTS ヒントが指定されていません。

    制約の無効化は既定の動作です。 制約を明示的に有効にするには、-h ヒントで CHECK_CONSTRAINTS オプションを使用します。

  • トリガーが存在し、 FIRE_TRIGGERS ヒントが指定されていません。

    既定では、トリガーは起動しません。 トリガーを明示的に起動するには、-h ヒントで FIRE_TRIGGERS オプションを使用します。

  • -E オプションを使用して、データ ファイルから ID 値をインポートします。

サポートを受ける

SQL ドキュメントへの投稿

SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。

詳細については、 Microsoft Learn ドキュメントの編集を参照してください。