bcp による接続
bcp ユーティリティは、Linux と macOS の Microsoft ODBC Driver for SQL Server で使用できます。 このページでは、bcp の Windows バージョンとの違いについて説明します。
フィールド ターミネータはタブ ("\t") です。
行ターミネータは改行 ("\n") です。
拡張文字を含まない
bcp
フォーマット ファイルとデータ ファイルでは、文字モードが推奨される形式です。
注意
コマンドライン引数のバックスラッシュ ' \' は、引用符で囲むか、エスケープする必要があります。 たとえば、ユーザー設定の行ターミネータとして改行を指定する場合、次のいずれかのメカニズムを使用する必要があります。
- -r\\n
- -r"\n"
- -r'\n'
次の例は、テーブルの行をテキスト ファイルにコピーする bcp
コマンドの呼び出しを示しています。
bcp AdventureWorks2008R2.Person.Address out test.dat -Usa -Pxxxx -Sxxx.xxx.xxx.xxx
使用可能なオプション
現在のリリースでは、次の構文およびオプションを使用できます。
[database.]schema.table in data_file | out data_file
-a packet_size
サーバーとの間で送信されるネットワーク パケットごとのバイト数を指定します。
-b batch_size
一括インポートするデータの行数を指定します。
-c
文字データ型を使用します。
-d database_name
接続先のデータベースを指定します。
-D
bcp
-S オプションに渡された値が、データ ソース名 (DSN) として解釈されるようにします。 詳細については、「Connecting with sqlcmd」 (sqlcmd による接続) の「DSN Support in sqlcmd and bcp」 (sqlcmd および bcp の DSN サポート) を参照してください。
-e error_file
bcp
ユーティリティでファイルからデータベースに転送できなかった行を格納するエラー ファイルの完全パスを指定します。
-E
ID 列に、インポートされたデータ ファイルの ID 値を使用します。
-f format_file
フォーマット ファイルの完全パスを指定します。
-F first_row
テーブルからエクスポートする最初の行、またはデータ ファイルからインポートする最初の行の番号を指定します。
-G
このスイッチは、Azure SQL データベース、Azure SQL Managed Instance、または Azure Synapse Analytics に接続し、Microsoft Entra ID (旧称 Azure Active Directory) 認証を使用してユーザーを認証するように指定する場合に、クライアントによって使用されます。 -P オプションと組み合わせるだけで、アクセス トークン認証 (v17.8 以降) を使用できます。 -G スイッチを使用するには、bcp バージョン 17.6 以降が必要です。 バージョンを判断するには、bcp -v を実行します。
重要
-G
オプションは、Azure SQL データベース、Azure SQL Managed Instance および Azure Synapse Analytics にのみ適用されます。
現在、Microsoft Entra 対話型認証は、Linux または macOS 上でサポートされていません。 Microsoft Entra 統合認証には、Microsoft ODBC Driver 17 for SQL Server バージョン 17.6.1 以降と、適切に構成された Kerberos 環境が必要です。
-k
一括コピー操作時、空の列には、挿入される列の既定値ではなく、null 値が保持されます。
-l
ログインのタイムアウトを指定します。 \- l オプションでは、サーバーへの接続の試行時に、SQL Server へのログインがタイムアウトするまでの秒数を指定します。 既定のログイン タイムアウトは 15 秒です。 ログイン タイムアウトは、0 から 65,534 の数値にする必要があります。 指定した値が数値以外の場合、またはその範囲外の場合、bcp
によりエラー メッセージが生成されます。 0 の値は、無期限のタイムアウトを指定します。
-L last_row
テーブルからエクスポートする最後の行、またはデータ ファイルからインポートする最後の行の番号を指定します。
-m max_errors
bcp
操作が取り消される前に発生可能な構文エラーの最大数を指定します。
-n
データのネイティブの (データベース) データ型を使用して一括コピー操作を実行します。
-P password
ログイン ID のパスワードを指定します。 -U なしで -G オプションと組み合わせて使用すると、アクセス トークン (v17.8 以降) を含むファイルが指定されます。 トークン ファイルは UTF-16LE (BOM なし) 形式である必要があります。
アクセス トークンは、さまざまな方法で取得できます。 アクセス トークンは、そのまま送信されるので、バイト単位で正しくなるようにすることが重要です。 アクセス トークンを取得するコマンドの例を次に示します。 このコマンドでは、Azure CLI と Linux コマンドが使用されており、適切な形式でファイルに保存されます。 システムまたはターミナルの既定のエンコードが ASCII または UTF-8 ではない場合は、iconv
オプションの調整が必要になる場合があります。 結果のファイルを必ず慎重にセキュリティで保護し、不要になったら削除してください。
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-q
bcp
ユーティリティと SQL Server のインスタンスとの接続で、SET QUOTED_IDENTIFIER ON ステートメントを実行します。
-r row_terminator
行ターミネータを指定します。
-R
通貨、日付、時刻のデータを SQL Server に一括コピーする場合に、クライアント コンピューターのロケール設定に定義された地域別設定が使用されます。
-S server
接続する SQL Server インスタンスの名前を指定します。または、-D が使用されている場合、DSN です。
-t field_terminator
フィールド ターミネータを指定します。
-T
bcp
ユーティリティが信頼関係接続 (統合セキュリティ) を使用して SQL Server に接続することを指定します。
-u
サーバー証明書を信頼します。 (バージョン bcp
18 から使用可能)
-U login_id
SQL Serverへの接続に使用されるログイン ID を指定します。
-v
bcp
ユーティリティ バージョン番号と著作権に関する情報を報告します。
-w
Unicode 文字を使用して一括コピー操作を実行します。
このリリースでは、Latin-1 および UTF-16 文字がサポートされています。
-Y[s|m|o]
接続暗号化モードを指定します。 オプションは Strict、Mandatory、Optional です。 パラメーターを指定せずに -Y を使用すると、Mandatory 暗号化モードが使用されます。これは、-Ym に相当します。 (バージョン bcp
18 から使用可能)
利用できないオプション
現在のリリースでは、次の構文とオプションは利用できません。
-C
データ ファイル内のデータのコード ページを指定します。
-h hint
データをテーブルまたはビューに一括インポートするときに使用するヒントを指定します。
-i input_file
応答ファイルの名前を指定します。
-N
文字ではないデータにはネイティブな (データベース) データ型を使用し、文字データには Unicode 文字を使用します。
-o output_file
コマンド プロンプトからリダイレクトされた出力を受け取るファイル名を指定します。
-V (80 | 90 | 100)
SQL Server の以前のバージョンのデータ型を使用します。
-x
フォーマットおよび -f format_file オプションと共に使用し、既定の XML ではないフォーマット ファイルの代わりに XML ベースのフォーマット ファイルを生成します。