Integration Services のデータ型

更新 : 2007 年 9 月 15 日

データがパッケージ内のデータ フローに入ると、データを抽出する変換元は、そのデータを Integration Services のデータ型に変換します。数値データは数値データ型、文字列データは文字列データ型、および日付データは日付データ型に割り当てられます。GUID やバイナリ ラージ オブジェクト (BLOB) などの他のデータも、同様に適切な Integration Services のデータ型に割り当てられます。データのデータ型が Integration Services のデータ型に変換できない場合は、エラーが発生します。

一部のデータ フロー コンポーネントでは、Integration Services データ型と Microsoft .NET Framework のマネージ データ型の間でデータ型を変換します。Integration Services データ型とマネージ データ型の間のマッピングの詳細については、「データ フローでのデータ型のマッピング」を参照してください。

次の表に、Integration Services のデータ型を一覧で示します。

データ型 説明

DT_BOOL

ブール値です。

DT_BYTES

バイナリ データ値です。データ長は可変で、最大長は 8,000 バイトです。

DT_CY

通貨値です。このデータ型は、8 バイトの符号付き整数で、小数点以下桁数が 4、最大有効桁数は 19 です。

DT_DATE

年、月、日、および時間で構成される日付の構造体です。

DT_DATE データ型は、8 バイトの浮動小数点数を使用して実装されます。年、月、日は、1899 年 12 月 30 日の午前 0 時を 0 とし、そこからの経過日数が整数で表されます。時間値は、小数部分の絶対値で表されます。ただし、浮動小数点数値ではすべての実数値を表すことができません。したがって、DT_DATE で表すことができる日付の範囲には制限があります。

一方、DT_DBTIMESTAMP は、年、月、日、時間、分、秒、およびミリ秒が個別のフィールドを持つ構造体で表されます。このデータ型で表すことができる日付の範囲に制限はありません。

DT_DBDATE

年、月、および日で構成される日付の構造体です。

DT_DBTIME

時間、分、および秒で構成される時間の構造体です。

DT_DBTIMESTAMP

年、月、日、時間、分、秒、およびミリ秒で構成されるタイムスタンプの構造体です。

DT_DECIMAL

有効桁数と小数点以下桁数が固定長の、正確な数値です。このデータ型は、12 バイトの符号なし整数で、区切り記号および 0 から 28 までの小数点以下桁数を持ち、最大有効桁数は 29 です。

DT_FILETIME

1601 年 1 月 1 日以降を、100 ナノ秒間隔の数で表す 64 ビット値です。

DT_GUID

グローバルな一意識別子 (GUID) を格納するデータ型です。

DT_I1

1 バイトの符号付き整数です。

DT_I2

2 バイトの符号付き整数です。

DT_I4

4 バイトの符号付き整数です。

DT_I8

8 バイトの符号付き整数です。

DT_NUMERIC

有効桁数と小数点以下桁数が固定長の、正確な数値です。このデータ型は、16 バイトの符号なし整数で、区切り記号および 0 から 38 までの小数点以下桁数を持ち、最大有効桁数は 38 です。

DT_R4

単精度の浮動小数点値です。

DT_R8

倍精度の浮動小数点値です。

DT_STR

NULL で終わる ANSI/MBCS 文字の文字列で、最大長は 8,000 文字です。列の値に追加の NULL ターミネータが含まれている場合、その文字列は最初に NULL が出現した箇所で切り捨てられます。

DT_UI1

1 バイトの符号なし整数です。

DT_UI2

2 バイトの符号なし整数です。

DT_UI4

4 バイトの符号なし整数です。

DT_UI8

8 バイトの符号なし整数です。

DT_WSTR

NULL で終わる Unicode 文字の文字列で、最大長は 4,000 文字です。列の値に追加の NULL ターミネータが含まれている場合、その文字列は最初に NULL が出現した箇所で切り捨てられます。

DT_IMAGE

最大サイズが 231-1 (2,147,483,647) バイトのバイナリ値です。.

DT_NTEXT

最大長が 230- 1 (1,073,741,823) 文字の、Unicode 文字の文字列です。

DT_TEXT

最大長が 231-1 (2,147,483,647) 文字の、ANSI/MBCS 文字の文字列です。

列のデータ型の変更

列のデータが、変換元のデータ型で割り当てられている長さや桁数をいっぱいまで使用する必要がない場合は、その列のデータ型を変更できます。各データ行をできるだけ小さくすることにより、データ転送時のパフォーマンスを最適化できます。行が小さくなるほど、変換元から変換先へのデータ移動が高速になるためです。

Integration Services には、数値データ型のセットすべてが含まれているので、データのサイズに最も近いデータ型を選択できます。たとえば、DT_UI8 データ型の列の値が常に 0 から 3,000 までの整数の場合、このデータ型は DT_UI2 に変更できます。同様に、DT_CY データ型の列が、整数データ型を使用するパッケージのデータ要件を満たしている場合は、データ型を DT_I4 に変更できます。

また、日付または時間のデータを含む列のデータ型を変更し、データの一部である日または時間を抽出できます。たとえば、列のデータ型を DT_DBTIMESTAMP から DT_DBTIME に変更した場合、値の一部である時間、分、および秒のみが使用できるようになります。

列のデータ型は、次の方法で変更できます。

  • 変換を使用して列の値を式の結果で置換するか、または、元の列とは異なるデータ型を持つ列のコピーを作成します。詳細については、「派生列変換」を参照してください。
  • 変換を使用して、列のデータ型を別のデータ型にキャストします。詳細については、「データ変換の変換」を参照してください。
ms141036.note(ja-jp,SQL.90).gifメモ :
ブール値は論理値であって、数値ではありません。ブール値は一部の環境で数値として表示される場合がありますが、数値として格納されることはありません。また、.NET Framework のメソッドと同様に、さまざまなプログラミング言語でブール値が個別の数値として表されます。 たとえば、Visual Basic で使用できる変換関数は True を -1 に変換しますが、.NET Framework の System.Convert.ToInt32 メソッドは True を +1 に変換します。Integration Services 式言語は True を -1 に変換します。 エラーや予期しない結果が発生しないようにするには、TrueFalse を特定の数値で表現するコードを記述しないようにする必要があります。可能な限り、ブール型の変数には、仕様で定められている論理値以外の値を使用しないようにしてください。

Integration Services のデータ型とデータベースのデータ型とのマッピング

次の表に、特定のデータベースによって使用されるデータ型を Integration Services のデータ型にマッピングする際のガイダンスを示します。これらのマッピングは、SQL Server インポートおよびエクスポート ウィザードでソースからデータをインポートする際に使用されるマッピング ファイルから集約されます。これらのマッピング ファイルの詳細については、「SQL Server インポートおよびエクスポート ウィザードを使用してパッケージを作成する方法」を参照してください。

ms141036.note(ja-jp,SQL.90).gif重要 :
これらのマッピングは厳密な対応関係を表しているわけではなく、ガイダンスの提供のみを目的としています。場合によっては、この表に示されているデータ型とは異なるデータ型を使用する必要があります。
データ型 SQL Server (SQLOLEDB、SQLNCLI) SQL Server (SqlClient) Jet Oracle (MSDAORA) Oracle (OracleClient) DB2 (DB2OLEDB) DB2 (IBMDADB2)

DT_BOOL

bit

bit

Bit

DT_BYTES

binary、varbinary、timestamp

binary、varbinary、timestamp

BigBinary、VarBinary

RAW

RAW

DT_CY

smallmoney、money

smallmoney、money

Currency

DT_DATE

DT_DBDATE

DT_DBTIME

DT_DBTIMESTAMP

datetime、smalldatetime

datetime、smalldatetime

DateTime

TIMESTAMP、DATE、INTERVAL

TIMESTAMP、DATE、INTERVAL

TIME、TIMESTAMP、DATE

TIME、TIMESTAMP、DATE

DT_DECIMAL

DT_FILETIME

DT_GUID

uniqueidentifier

uniqueidentifier

GUID

DT_I1

DT_I2

smallint

smallint

Short

SMALLINT

SMALLINT

DT_I4

int

int

Long

INTEGER

INTEGER

DT_I8

bigint

bigint

BIGINT

BIGINT

DT_NUMERIC

decimal、numeric

decimal、numeric

Decimal

NUMBER、INT

NUMBER、INT

DECIMAL、NUMERIC

DECIMAL、NUMERIC

DT_R4

real

real

Single

REAL

REAL

DT_R8

float

float

Double

FLOAT、REAL

FLOAT、REAL

FLOAT、DOUBLE

FLOAT、DOUBLE

DT_STR

char、varchar

VarChar

CHAR、ROWID、VARCHAR2

CHAR、VARCHAR

CHAR、VARCHAR

DT_UI1

tinyint

tinyint

Byte

DT_UI2

DT_UI4

DT_UI8

DT_WSTR

nchar、nvarchar、sql_variant、xml

char、varchar、nchar、nvarchar、sql_variant、xml

LongText

NVARCHAR2、NCHAR

CHAR、ROWID、VARCHAR2、NVARCHAR2、NCHAR

GRAPHIC、VARGRAPHIC

GRAPHIC、VARGRAPHIC

DT_IMAGE

image

image

LongBinary

LONG RAW、BLOB、LOBLOCATOR、BFILE、VARGRAPHIC、LONG VARGRAPHIC、ユーザー定義型

LONG RAW、BLOB、LOBLOCATOR、BFILE、VARGRAPHIC、LONG VARGRAPHIC、ユーザー定義型

CHAR () FOR BIT DATA、VARCHAR () FOR BIT DATA

CHAR () FOR BIT DATA、VARCHAR () FOR BIT DATA、BLOB

DT_NTEXT

ntext

text、ntext

NCLOB、NVARCHAR、TEXT

LONG、CLOB、NCLOB、NVARCHAR、TEXT

LONG VARCHAR、NCHAR、NVARCHAR、TEXT

LONG VARCHAR、DBCLOB、NCHAR、NVARCHAR、TEXT

DT_TEXT

text

CLOB、LONG

LONG VARCHAR FOR BIT DATA

LONG VARCHAR FOR BIT DATA、CLOB

データ フローでのデータ型のマッピングの詳細については、「データ フローでのデータ型のマッピング」を参照してください。

参照

概念

データ フロー内のデータ処理

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2007 年 9 月 15 日

変更内容 :
  • DT_DBTIMESTAMP データ型の説明を更新しました。

2006 年 7 月 17 日

変更内容 :
  • ブール値型が整数値に変換される場合に発生する問題についての注意点を追加しました。
  • 追加の NULL ターミネータが含まれている DT_STR 型または DT_WSTR 型の列値は最初の NULL 文字で切り捨てられることを示す注意点を追加しました。

2005 年 12 月 5 日

変更内容 :
  • マネージ データ型への Integration Services データ型のマッピングに関する情報と、その詳細が記載されたトピックへのリンクを追加しました。
  • DT_DATE と DT_DBTIMESTAMP の比較に関する記述を追加しました。