対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
バルクコピープログラムユーティリティ(bcp)は、SQL Server データベース エンジンのインスタンスとデータファイル間でユーザー指定の形式でデータを一括コピーします。
Note
Microsoft Fabric Data Warehouseのbcp記事を見るには、bcp utility(Fabric Data Warehouse)をご覧ください。
Important
この機能は プレビュー段階です。
バルクコピープログラムユーティリティ(bcp)は、ユーザー指定のフォーマットでデータファイルとデータをMicrosoft Fabric Data Warehouse間で一括コピーします。
Note
bcp の記事を表示しています。 他のプラットフォーム向けの記事を見るには 、bcp utilityをご覧ください。
bcpユーティリティを使って大量の新しい行をデータベース エンジンテーブルにインポートしたり、テーブルからデータをデータファイルにエクスポートしたりします。 このユーティリティでは 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 サポートが導入されています。
構文
Note
Microsoft Fabric Data Warehouseでサポートされているbcp構文を見るには、Syntax for Fabric Data Warehouseを参照してください。
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 hostname_in_certificate ]
[ -h"hint [ , ...n ] " ]
[ -i input_file ]
[ -J server_certificate ]
[ -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[0|1] ]
Note
Microsoft Fabric Data Warehouseの文法bcpを見ているのです。 他のプラットフォームでサポートされている構文を見るには、 bcp utilityの構文をご覧ください。
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 hostname_in_certificate ]
[ -h"hint [ , ...n ] " ]
[ -i input_file ]
[ -J server_certificate ]
[ -k ]
[ -l login_timeout ]
[ -L last_row ]
[ -m max_errors ]
[ -n ]
[ -N ]
[ -o output_file ]
[ -q ]
[ -r row_term ]
[ -R ]
[ -S [ sql_endpoint_name ] ]
[ -t field_term ]
[ -T ]
[ -u ]
[ -v ]
[ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
[ -w ]
[ -x ]
[ -Y [ s | m | o ] ]
コマンド ライン オプション
次の表に、 bcpで使用できるコマンド ライン オプションと、それらがサポートするオペレーティング システムを示します。
1 SQL Server 2025 (17.x) に付属するバージョン 18 以降bcp必要があります。
2は-zおよび-z0bcpバージョン18.6.1.1以降が必要です。
-z1オプションはバージョン18.7.1.1以降bcp必要があります。
オブジェクトと転送モード
database_name
指定したテーブルまたはビューを含むデータベースの名前。 このパラメーターを指定しない場合は、ユーザーの既定のデータベースが使用されます。
-d で明示的にデータベース名を指定することもできます。
schema
テーブルまたはビューの所有者の名前。 操作を実行するユーザーが指定のテーブルまたはビューを所有している場合、schema は省略可能です。 スキーマを指定しておらず、操作を行うユーザーが指定されたテーブルやビューを所有していなければ、データベース エンジンはエラーメッセージを返し、操作はキャンセルされます。
table_name
データベース エンジンにデータをインポートする際の宛先テーブル名(in)、データベース エンジンからデータをエクスポートする際のソーステーブル名(out)。
view_name
データをデータベース エンジンにコピーする際の宛先ビュー名(in)、データベース エンジンからデータをコピーする際のソースビュー(out)。 コピー先 (in) として使用する場合、ビューは、すべての列が同じテーブルを参照している場合にのみサポートされます。 ビューがソース (out) として使用されている場合、この制限は適用されません。 ビューへのデータのコピーに関する制限の詳細については、 INSERTを参照してください。
"query"
結果セットを返す Transact-SQL クエリ。 クエリから複数の結果セットが返される場合、最初の結果セットのみがデータ ファイルにコピーされ、それ以降の結果セットは無視されます。 クエリは二重引用符で、クエリに埋め込まれたものは単一引用符で囲みます。 また、クエリからデータを一括コピーするときに queryout も指定する必要があります。
bcp ステートメントを実行する前に、ストアド プロシージャ内で参照されるすべてのテーブルが存在する限り、クエリはストアド プロシージャを参照できます。 たとえば、ストアド プロシージャで一時テーブルが生成された場合、一時テーブルは実行時にのみ使用でき、ステートメントの実行時には使用できないため、 bcp ステートメントは失敗します。 この場合は、ストアド プロシージャの結果をテーブルに挿入し、 bcp を使用してテーブルからデータ ファイルにデータをコピーすることを検討してください。
で
ファイルからデータベース テーブルまたはビューにデータをコピーします。 一括コピーの方向を指定します。
out
データベース テーブルまたはビューからファイルにデータをコピーします。 一括コピーの方向を指定します。
既存のファイルを指定すると、ファイルは上書きされます。
bcp ユーティリティは、データを抽出するときに、空の文字列を null として、null 文字列を空の文字列として表します。
data_file
データ ファイルの完全なパス。 データベース エンジンにデータを一括インポートすると、指定されたテーブルやビューにコピーするデータファイルが入っています。 データベース エンジンからデータを一括エクスポートすると、データファイルにはテーブルやビューからコピーされたデータが含まれています。 パスは、1 文字から 255 文字までです。 データ ファイルに含めることができる行の数は最大 2^63 - 1 です。
queryout
クエリからデータをコピーし、クエリからデータを一括コピーする場合にのみ指定する必要があります。
format
指定されたオプション (-n、-c、-w、または -N) とテーブルやビューの区切り記号に基づいて、フォーマット ファイルを作成します。 データを一括コピーする場合、 bcp コマンドはフォーマット ファイルを参照できるため、形式情報を対話形式で再入力できなくなります。
format オプションには -f オプションが必要です。XML フォーマット ファイルを作成するには、-x オプションも必要です。 詳細については、「 bcp を使用したフォーマット ファイルの作成 (SQL Server)」を参照してください。 値として nul を指定する必要があります (format nul)。
-q
bcpユーティリティとデータベース エンジンインスタンス間の接続でSET QUOTED_IDENTIFIER ON文を実行します。 名前に空白や単一引用符が含まれるデータベース、所有者、テーブル、またはビューを指定する場合に、このオプションを使用します。 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
データベース エンジンに接続する際に使うログインIDを指定します。
-P パスワード
ログイン ID のパスワードを指定します。 このオプションを使用しない場合は、 bcp コマンドによってパスワードの入力が求められます。 コマンド プロンプトの最後でパスワードなしでこのオプションを使用する場合、 bcp は既定のパスワード (NULL) を使用します。
Important
空白のパスワードは使用しないでください。 強力なパスワードを使用してください。
パスワードをマスクする場合は、-P オプションを -U オプションと共に指定しないでください。 代わりに、bcp オプションやその他のスイッチ (-Uを指定しない) と共に-Pを指定した後、Enter キーを押すと、コマンドによってパスワードの入力が求められます。 この方法を使用すると、入力時にパスワードが確実にマスクされます。
password がハイフン (-) またはスラッシュ (/) で始まる場合は、-P と password 値の間に空白を入れないでください。
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 可用性グループのセカンダリ レプリカに読み取り専用の負荷を移す」を参照してください。
- login_timeout
ログインのタイムアウトを指定します。
-l オプションでは、サーバーへの接続の試行時に、SQL Server へのログインがタイムアウトするまでの秒数を指定します。 既定のログイン タイムアウトは 15 秒です。 ログイン タイムアウトは、0 から 65,534 の数値にする必要があります。 指定した値が数値でない場合、またはその範囲に収まらない場合は、 bcp エラー メッセージが生成されます。 値が 0 の場合は、タイムアウトが無期限であることを示します。
-H hostname_in_certificate
サーバー証明書を検証するときに使用するホスト名を指定します。 接続に使用するサーバー名が証明書のサブジェクト名と一致しない場合は、このオプションを使用します。
-J サーバー証明書
接続に対して信頼するサーバー証明書を含む PEM ファイルへのパスを指定します。
-T
統合セキュリティを使用して、bcp ユーティリティが信頼された接続を使用してSQL Serverに接続することを指定します。 ネットワーク ユーザーのセキュリティ資格情報 (login_id と password) は必要ありません。
-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]
適用対象: バージョン 18 以降bcp、SQL Server 2025 (17.x) に付属しています。
接続時にネットワーク上で TLS 暗号化が使用されるかどうかを指定します。
-Y は、 o ( Optionalの場合)、 m ( Mandatory、既定値)、または s ( Strictの場合) です。
-Yを含めない場合は、-Ym (Mandatoryの場合) が既定値です。
-u
適用対象: バージョン 18 以降bcp、SQL Server 2025 (17.x) に付属しています。
サーバー証明書を信頼します。 接続の暗号化オプションと共に使用すると、自己署名サーバー証明書を使用した暗号化が有効になります。
データ表現
-c
文字データ型を使用して操作を実行します。 このオプションは、各フィールドに対してプロンプトを表示しません。 ストレージの種類として char をプレフィックスなしで使用し、フィールド区切り記号として \t (タブ文字) を使用し、行ターミネータとして \r\n (改行文字) を使用します。
-c は、-w と互換性がありません。
詳細については、「文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。
ベスト プラクティスについては、「 文字モードとネイティブ モードのベスト プラクティス」を参照してください。
-C { ACP |OEM |RAW | code_page }
適用対象: Windows のみ。 Linux および macOS ではサポートされていません。
データ ファイル内のデータのコード ページを指定します。 code_page は、データに char、 varchar、 text 列 (文字値が 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)」を参照してください。
bcpで-Nを使用して同じテーブル スキーマにデータをエクスポートしてインポートすると、固定長の Unicode 以外の文字列 (char(10 など) がある場合、切り捨て警告が表示されることがあります。
警告は無視してかまいません。 この警告を解決する 1 つの方法は、-n ではなく -N を使うことです。
-w
Unicode 文字を使用して一括コピー操作を実行します。 このオプションは、各フィールドに対してプロンプトを表示しません。 ストレージの種類として nchar 、プレフィックスなし、フィールド区切り記号として \t (タブ文字)、行ターミネータとして \n (改行文字) を使用します。
-w は、-c と互換性がありません。
詳細については、「 Unicode 文字形式を使用してデータをインポートまたはエクスポートする (SQL Server)」を参照してください。
-z
ユーティリティでbcp データ型のサポートを有効にします。 現在、この機能は既定で無効になっています。 無効にすると、ベクター データが JSON float 配列文字列としてインポートまたはエクスポートされます。 有効になっている場合、および SQL Server 2025 (17.x) 以降のバージョンに接続すると、ベクター データがネイティブ ベクター バイナリでインポートまたはエクスポートされます。
-z0ベクターのサポートにはfloat32を使用し、ベクターのサポートには-z1float16使用します。
ファイルの書式設定
-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 がハイフン (-) またはスラッシュ (/) で始まる場合は、-f と format_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でバッチ処理を明示的に制御する場合はbcpを使用するか、データを1つのトランザクションとして送信するときにサーバーオプティマイザーにヒントを与えるにはROWS_PER_BATCHを使用します。
-h "ヒント [, ... n]"
適用対象: Windows のみ。 Linux および macOS ではサポートされていません。
テーブルまたはビューにデータを一括インポートする際に使用するヒントまたはヒントを指定します。
ORDER (column [ASC | DESC] [, ...n])
データ ファイルのデータの並べ替え順序です。 一括インポートのパフォーマンスは、インポートするデータがテーブルのクラスター化インデックスに従って並べ替えられた場合に向上します (存在する場合)。 データ ファイルが別の順序で並べ替えられている場合、つまり、クラスター化インデックス キーの順序以外の場合、またはテーブルにクラスター化インデックスがない場合、
ORDER句は無視されます。 指定する列名は、変換先テーブルの有効な列名である必要があります。 既定では、bcpはデータ ファイルの順序が指定されていないことを前提としています。 最適化された大量インポートのために、データベース エンジンはインポートされたデータがソートされていることも検証します。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
-mmax_errors スイッチは、制約チェックには適用されません。FIRE_TRIGGERS
このオプションを in 引数と共に指定すると、コピー先テーブルで定義されているすべての挿入トリガーは、一括コピー操作中に実行されます。
FIRE_TRIGGERSを指定しない場合、挿入トリガーは実行されません。FIRE_TRIGGERSは、out、queryout、および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 がハイフン (-) またはスラッシュ (/) で始まる場合は、-r と row_term 値の間に空白を入れないでください。
-t field_term
フィールド ターミネータを指定します。 既定値は \t (タブ文字) です。 既定のフィールド ターミネータをオーバーライドする場合、このパラメーターを使用します。 詳細については、「 フィールドターミネータと行ターミネータの指定 (SQL Server)」を参照してください。
bcp コマンドでフィールド ターミネータを 16 進表記で指定した場合、値は0x00で切り捨てられます。 たとえば、0x410041 を指定した場合は、0x41 が使われます。
field_term がハイフン (-) またはスラッシュ (/) で始まる場合は、-t と field_term 値の間に空白を入れないでください。
値の処理
-k
空の列に対して既定値を挿入するのではなく、操作中に null 値を保持することを指定します。 詳細については、「一括インポート中の NULL または既定値の保持 (SQL Server)」を参照してください。
-E
操作で、インポートされたデータ ファイルの ID 値を ID 列に使用することを指定します。
-Eを指定しない場合、データベース エンジンはインポートするデータファイルのこの列の識別値を無視し、テーブル作成時に指定されたシード値とインクリメント値に基づいて自動的に固有の値を割り当てます。 詳細については、「DBCC CHECKIDENT」を参照してください。
データ ファイルにテーブルまたはビューの ID 列の値が含まれていない場合は、フォーマット ファイルを使用して、データのインポート時にテーブルまたはビューの ID 列をスキップするように指定します。 データベース エンジンは自動的に列に固有の値を割り当てます。
-E オプションには、特別なアクセス許可が必要です。 詳細はこの記事の後半の 「Comments 」を参照してください。
ファイル I/O とログ記録
-i input_file
適用対象: Windows のみ。 Linux および macOS ではサポートされていません。
応答ファイルの名前を指定します。 このファイルには、対話型モード (-n、 -c、 -w、または指定されていない -N ) を使用して一括コピー操作を実行するときに、各データ フィールドのコマンド プロンプトの質問に対する応答が含まれます。
input_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-i と input_file 値の間に空白を入れないでください。
-o 出力ファイル
適用対象: Windows のみ。 Linux および macOS ではサポートされていません。
コマンド プロンプトからリダイレクトされた出力を受け取るファイル名を指定します。
output_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-o と output_file 値の間に空白を入れないでください。
-e err_file
bcp ユーティリティがファイルからデータベースに転送できない行を格納するために使用されるエラー ファイルの完全なパスを指定します。
bcp コマンドからのエラー メッセージは、ユーザーのワークステーションに送信されます。 このオプションを使用しない場合、エラー ファイルは作成されません。
err_file がハイフン (-) またはスラッシュ (/) で始まる場合は、-e と err_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ユーティリティの一括処理が、クライアントコンピュータのローカレ設定で定義された地域フォーマットを使って通貨、日付、時刻データをデータベース エンジンにコピーすることを指定します。 既定では、 bcp は地域設定を無視します。
-v
bcp ユーティリティのバージョン番号と著作権を報告します。
注釈
-
bcpユーティリティは、エラー メッセージの最初の 512 バイトのみを表示します。 -
bcpユーティリティは、すべてのサポートされているデータベース エンジンバージョンと互換性のあるネイティブデータファイルをサポートしています。 -
bcpは現在、Microsoft Fabric の Warehouse でプレビュー段階にあります。 -
bcpでは、Microsoft Fabricの SQL 分析エンドポイントにデータをインポートできません。
Permissions
bcp out操作には、ソース テーブルSELECTアクセス許可が必要です。
bcp in操作では、ターゲット テーブルに対するSELECTとINSERTのアクセス許可が最小限に抑えられます。 さらに、次のいずれかの条件に該当する場合は、 ALTER TABLE アクセス許可が必要です。
制約が存在し、
CHECK_CONSTRAINTSヒントが指定されていません。制約の無効化は既定の動作です。 制約を明示的に有効にするには、
-hヒントでCHECK_CONSTRAINTSオプションを使用します。トリガーが存在し、
FIRE_TRIGGERSヒントが指定されていません。既定では、トリガーは起動しません。 トリガーを明示的に起動するには、
-hヒントでFIRE_TRIGGERSオプションを使用します。-Eオプションを使用して、データ ファイルから ID 値をインポートします。
関連するコンテンツ
- 一括エクスポートまたは一括インポートのデータの準備
- BULK INSERT (Transact-SQL)
- OPENROWSET(Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sys.sp_configure(Transact-SQL)
- sys.sp_tableoption(Transact-SQL)
- データをインポートまたはエクスポートするためのフォーマット ファイル (SQL Server)
サポートを受ける
- SQL のアイデア: SQL Server の改善に関する提案はありますか?
Microsoft Q&A (SQL Server) - DBA Stack Exchange (タグ sql-server): SQL Serverへの質問をしてください
- Stack Overflow (タグ sql-server): SQL 開発に関する質問への回答
- Microsoft SQL Server ライセンス条項と情報
- 法人のお客様向けサポート オプション
- 追加のSQL Serverのヘルプとフィードバック
SQL ドキュメントへの投稿
SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。
詳細については、 Microsoft Learn ドキュメントの編集を参照してください。