bcp を使用した互換性のためのデータ形式の指定 (SQL Server)

このトピックでは、SQL Server bcp コマンドのデータ形式属性、フィールド固有のプロンプト、および XML 以外のフォーマット ファイルでのフィールドごとのデータの格納について説明します。 このトピックの内容は、SQL Server データを一括エクポートして別のプログラム (別のデータベース プログラムなど) に一括インポートする場合に有用です。 ソース テーブルの既定のデータ形式 (ネイティブ、文字、または Unicode) が、他のプログラムで想定されているデータ レイアウトと互換性がない場合があります。互換性がない場合はデータをエクスポートするときに、データ レイアウトを記述する必要があります。

注意

データのインポートやエクスポートのデータ形式について詳しく理解していない場合は、「一括インポートまたは一括エクスポートのデータ形式 (SQL Server)」を参照してください。

このトピックの内容

  • bcp データ形式の属性

  • フィールド固有のプロンプトの概要

  • XML 以外のフォーマット ファイルでのフィールドごとのデータの格納

  • 関連タスク

  • 関連コンテンツ

bcp データ形式の属性

bcp コマンドにより、次のデータ形式属性に関して、データ ファイル内の各フィールドの構造を指定できます。

  • ファイル保存形式

    ファイル ストレージ型は、データ ファイルへのデータの格納方法を記述します。 データ ファイルには、データベース テーブルの型 (ネイティブ形式)、文字表現 (文字形式)、または暗黙的な型変換がサポートされているデータ型のいずれかでデータをエクスポートできます。暗黙的な型変換では、たとえば、smallint は int としてコピーされます。 ユーザー定義のデータ型は、基本データ型としてエクスポートされます。 詳細については、「bcp を使用したファイル ストレージ型の指定 (SQL Server)」を参照してください。

  • プレフィックス長

    bcp コマンドでは、ネイティブ形式のデータをデータ ファイルに一括エクスポートするためのファイル ストレージが最も少なくなるように、各フィールドの前にそのフィールドの長さを 1 文字以上の文字列で指定します。 このような文字列を、プレフィックス長文字列と呼びます。 詳細については、「bcp を使用したデータ ファイルのプレフィックス長の指定 (SQL Server)」を参照してください。

  • フィールド長

    フィールド長は、文字形式でデータを表現するために必要な文字の最大数を示します。 データがネイティブ形式で格納される場合、フィールド長は既にわかっています。 詳細については、「bcp を使用したフィールド長の指定 (SQL Server)」を参照してください。

  • フィールド ターミネータ

    文字列データ フィールドでは、省略可能なターミネータ文字を使用して、データ ファイルの各フィールドの末尾 (フィールド ターミネータを使用) と各行の末尾 (行ターミネータを使用) を示すことができます。 ターミネータ文字は、フィールドや行の終了位置と次のフィールドや行の開始位置を、データ ファイルを読み取るプログラムに示す方法の 1 つです。 詳細については、「フィールド ターミネータと行ターミネータの指定 (SQL Server)」を参照してください。

[先頭に戻る]

フィールド固有のプロンプトの概要

対話的な bcp コマンドに in オプションまたは out オプションが含まれていて、フォーマット ファイル スイッチ (-f) またはデータ形式スイッチ (-n-c-w、または -N) のいずれも含まれていない場合は、ソース テーブルとターゲット テーブルの各列で、上記の属性について順番に問い合わせが行われます。 問い合わせが行われる際は、bcp コマンドにより、テーブル列の SQL Server データ型に基づいてそれぞれ既定値が表示されます。 すべての問い合わせに対して既定値を受け入れることは、コマンド ラインでネイティブ形式 (-n) を指定するのと同じ結果になります。 各プロンプトには、[default] のように既定値が角かっこ付きで表示されます。 表示される既定値を受け入れるには、Enter キーを押します。 既定値以外を指定するには、プロンプトで新しい値を入力します。

使用例

次の例では、bcp コマンドを使用して、HumanResources.myTeam テーブルから myTeam.txt ファイルに、データを対話的に一括エクスポートします。 このテーブルを作成しないと、例を実行できません。 テーブルおよびテーブルの作成方法の詳細については、「HumanResources.myTeam サンプル テーブル (SQL Server)」を参照してください。

コマンドでフォーマット ファイルもデータ型も指定しないと、bcp からデータ形式情報が要求されます。 Microsoft Windows コマンド プロンプトで、次のように入力します。

bcp AdventureWorks.HumanResources.myTeam out myTeam.txt -T

列ごとに、bcp からフィールド固有の値が要求されます。 次の例は、テーブルの EmployeeID 列と Name 列のフィールド固有のプロンプトを示しています。また、各列の既定のファイル保存形式 (ネイティブ形式) も示しています。 EmployeeID 列と Name 列のプレフィックス長は、それぞれ 0 と 2 です。 ここでは、各フィールドのターミネータとして、ユーザーがコンマ (,) を指定します。

Enter the file storage type of field EmployeeID [smallint]:

Enter prefix-length of field EmployeeID [0]:

Enter field terminator [none]:,

Enter the file storage type of field Name [nvarchar]:

Enter prefix length of field Name [2]:

Enter field terminator [none]:,

.

.

.

テーブルの列ごとに、列の順番に従って、同等のプロンプトが (必要に応じて) 表示されます。

[先頭に戻る]

XML 以外のフォーマット ファイルでのフィールドごとのデータの格納

すべてのテーブル列の情報を指定すると、bcp コマンドから XML 以外のフォーマット ファイルを生成することを求められます。この生成は省略可能です。このフォーマット ファイルには、プロンプトに応じて指定したフィールドごとの情報が格納されます (上記の例を参照)。 フォーマット ファイルを生成することを選択すると、いつでも、そのテーブルからデータをエクスポートしたり、同じような構造のデータを SQL Server にインポートできます。

注意

フォーマット ファイルを使用して、データ ファイルから SQL Server のインスタンスにデータを一括インポートできます。また、形式を再度指定しないで、そのテーブルからデータを一括エクスポートできます。 詳細については、「データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)」を参照してください。

次の例では、myFormatFile.fmt という名前の XML 以外のフォーマット ファイルを作成します。

Do you want to save this format information in a file? [Y/n] y

Host filename: [bcp.fmt]myFormatFile.fmt

フォーマット ファイルの既定の名前は bcp.fmt ですが、必要に応じて別のファイル名を指定できます。

注意

文字形式やネイティブ形式など、ファイル保存形式に 1 つのデータ形式を使用するデータ ファイルの場合は、format オプションを使用することで、データをエクスポートまたはインポートしなくても、フォーマット ファイルをすばやく作成できます。 この方法は簡単で、XML フォーマット ファイルと XML 以外のフォーマット ファイルのどちらも作成できるという利点があります。 詳細については、「フォーマット ファイルの作成 (SQL Server)」を参照してください。

[先頭に戻る]

関連タスク

関連コンテンツ

なし

関連項目

参照

bcp ユーティリティ

データ型 (Transact-SQL)

概念

データの一括インポートと一括エクスポート (SQL Server)

一括インポートまたは一括エクスポートのデータ形式 (SQL Server)