dwloader のデータ型変換規則 - Analytics Platform Service (PDW)

この記事では、dwloader コマンド ライン ローダーが PDW にデータを読み込むときにサポートする入力データ形式と暗黙的なデータ型変換について説明します。 暗黙的なデータ変換は、入力データが SQL Server PDW ターゲット テーブルのデータ型と一致しない場合に発生します。 この情報は、読み込みプロセスを設計するときに使用して、データが SQL Server PDW に正常に読み込まれます。

バイナリ型にリテラルを挿入します

次の表は、binary (n) または varbinary (n) 型の SQL Server PDW 列にリテラル値をロードするために受け入れられるリテラルの型、形式、変換規則を定義しています。

入力データの種類 入力データの例 binary または varbinary データ型への変換
バイナリ リテラル [0x]hexidecimal_string

例: 12Ef または0x12Ef
"0x" というプレフィックスは省略可能です。

データ ソースの長さは、データ型に指定されたバイト数を超えることはできません。

データ ソースの長さが binary データ型のサイズより小さい場合、データはデータ型のサイズに達するためにゼロで右側に埋め込まれます。

日付と時刻の型にリテラルを挿入します

日付と時刻のリテラルは、単一引用符で囲まれた特定の形式の文字列リテラルを使用して表されます。 次の表は、日付または時刻リテラルを datetimesmalldatetimedatetimedatetimeoffset、または datetime2 型の列にロードする場合に許可されるリテラル タイプ、形式、および変換ルールを定義します。 テーブルは、指定されたデータ型の既定の形式を定義します。 指定できるその他の形式は、「Datetime 形式」セクションで定義されています。 日付と時刻のリテラルには、先頭または末尾にスペースを含めることはできません。 datesmalldatetime、null 値は固定幅モードでは読み込めません。

datetime データ型

次の表では、datetime 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 空の文字列 ('') は既定値 '1900-01-01 12:00:00.000' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。

入力データの種類 入力データの例 datetime データ型への変換
datetime 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss[.fff]'

例: '2007-05-08 12:35:29.123'
小数桁が見つからない場合、値が挿入されると 0 に設定されます。 例えば、リテラル '2007-05-08 12:35' は '2007-05-08 12:35:00.000' として挿入されます。
smalldatetime 形式の文字列リテラル YYYY-MM-DD hh:mm:ss

例: '2007-05-08 12:35'
秒と残りの小数桁の数字は、値が挿入されるときに 0 に設定されます。
date 形式の文字列リテラル 'yyyy-MM-dd'

例: '2007-05-08'
時間値 (時、分、秒、分数) は、値が挿入されるときに 12:00:00.000 に設定されます。
datetime2 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss.fffffff'

例: '2007-05-08 12:35:29.1234567'
ソース データは、3 桁の小数桁を超えることはできません。 たとえば、リテラル '2007-05-08 12:35:29.123' が挿入されますが、値 '2007-05-8 12:35:29.1234567' はエラーを生成します。

smalldatetime データ型

次の表では、smalldatetime 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 空の文字列 ('') は既定値 '1900-01-01 12:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。

入力データの種類 入力データの例 smalldatetime データ型への変換
smalldatetime 形式の文字列リテラル 'yyyy-MM-dd hh:mm' または 'yyyy-MM-dd hh:mm:ss'

例: '2007-05-08 12:00' または '2007-05-08 12:00:15'
ソース データには、年、月、日、時、分の値が必要です。 秒はオプションで、存在する場合は値 00 に設定する必要があります。 その他の値は、エラーとなります。

秒はオプションです。 smalldatetime 列に読み込むと、dwloader は秒と秒の小数部を切り上げるようになります。 たとえば、1999-01-05 20:10:35.123 は 01-05 20:11 として読み込まれます。
date 形式の文字列リテラル 'yyyy-MM-dd'

例: '2007-05-08'
時間値 (時、分、秒、分数) は、値が挿入されるときに 0 に設定されます。

date データ型

次の表では、date 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 空の文字列 ('') はデフォルト値「1900-01-01」に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。

入力データの種類 入力データの例 日付データ型への変換
date 形式の文字列リテラル 'yyyy-MM-dd'

例: '2007-05-08'

時間データ型

次の表では、リテラル値を time 型の列に読み込むための既定の形式と規則を定義します。 空の文字列 ('') は既定値 '00:00:00.0000' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。

入力データの種類 入力データの例 時刻データ型への変換
time 形式の文字列リテラル 'hh:mm:ss.fffffff'

例: '12:35:29.1234567'
データ ソースの有効桁数 (小数部の桁数) が time データ型の有効桁数よりも小さいか等しい場合、データは右にゼロで埋め込まれます。 例えば、リテラル値 '12:35:29.123' は '12:35:29.1230000' として挿入されます。

datetimeoffset データ型

次の表では、datetimeoffset (n) 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 既定の形式は 'yyyy-MM-dd hh:mm:ss.fffffff {+|-}hh:mm' です。 空の文字列 ('') は既定値 '1900-01-01 12:00:00.0000000 +00:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。 小数部の桁数は、列定義によって異なります。 例えば、datetimeoffset (2) として定義された列には、2 桁の小数部が含まれます。

入力データの種類 入力データの例 datetimeoffset データ型への変換
datetime 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss[.fff]'

例: '2007-05-08 12:35:29.123'
値が挿入されると、小数部の数字とオフセット値が 0 に設定されます。 例えば、リテラル '2007-05-08 12:35:29.123' は '2007-05-08 12:35:29.1230000 +00:00' として挿入されます。
smalldatetime 形式の文字列リテラル YYYY-MM-DD hh:mm:ss

例: '2007-05-08 12:35'
秒、残りの小数部の数字とオフセット値は、値が挿入されたときに 0 に設定されます。
date 形式の文字列リテラル 'yyyy-MM-dd'

例: '2007-05-08'
時間値 (時、分、秒、分数) は、値が挿入されるときに 0 に設定されます。 例えば、リテラル '2007-05-08' は '2007-05-08 00:00:00.0000000 +00:00' として挿入されます。
datetime2 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss.fffffff'

例: '2007-05-08 12:35:29.1234567'
ソース データは、datetimeoffset 列の指定された秒の小数点以下の数を超えることはできません。 データ ソースの秒の小数点以下の数が含まれている場合、データの右側にゼロが埋め込まれます。 例えば、データ型が datetimeoffset (5) の場合、リテラル値 '2007-05-08 12:35:29.123 +12:15' は '12:35:29.12300 +12:15' として挿入されます。
datetimeoffset 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss.fffffff {+|-} hh:mm'

例: '2007-05-08 12:35:29.1234567 +12:15'
ソース データは、datetimeoffset 列の指定された秒の小数点以下の数を超えることはできません。 データ ソースの秒の小数点以下の数が含まれている場合、データの右側にゼロが埋め込まれます。 例えば、データ型が datetimeoffset (5) の場合、リテラル値 '2007-05-08 12:35:29.123 +12:15' は '12:35:29.12300 +12:15' として挿入されます。

datetime2 データ型

次の表では、datetime2 (n) 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 既定の形式は 'yyyy-MM-dd hh:mm:ss.fffffff' です。 空の文字列 ('') は既定値 '1900-01-01 12:00:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。 小数部の桁数は、列定義によって異なります。 例えば、datetime2 (2) として定義された列には、2 桁の小数部が含まれます。

入力データの種類 入力データの例 datetime2 データ型への変換
datetime 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss[.fff]'

例: '2007-05-08 12:35:29.123'
秒の小数部はオプションであり、値が挿入されるときに 0 に設定されます。
smalldatetime 形式の文字列リテラル YYYY-MM-DD hh:mm:ss

例: '2007-05-08 12'
オプションの秒と残りの小数部の数字は、値が挿入されるときに 0 に設定されます。
date 形式の文字列リテラル 'yyyy-MM-dd'

例: '2007-05-08'
時間値 (時、分、秒、分数) は、値が挿入されるときに 0 に設定されます。 例えば、リテラル '2007-05-08' は '2007-05-08 12:00:00.0000000' として挿入されます。
datetime2 形式の文字列リテラル 'yyyy-MM-dd hh:mm:ss:fffffff'

例: '2007-05-08 12:35:29.1234567'
データ ソースに datetime2(n) で指定された値以下のデータおよび時刻コンポーネントが含まれている場合は、データが挿入されます。それ以外の場合はエラーが生成されます。

DateTime の形式

Dwloader では、SQL Server PDW に読み込む入力データに対して次のデータ形式がサポートされています。 表の後に詳細が一覧表示されます。

datetime smalldatetime date datetime2 datetimeoffset
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] [M[M]]M-[d]d-[yy]yy HH:mm[:00] [M[M]]M-[d]d-[yy]yy [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fff][tt] [M[M]]M-[d]d-[yy]yy hh:mm[:00][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] [M[M]]M-[yy]yy-[d]d HH:mm[:00] [M[M]]M-[yy]yy-[d]d [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fff][tt] [M[M]]M-[yy]yy-[d]d hh:mm[:00][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] [yy]yy-[M[M]]M-[d]d HH:mm[:00] [yy]yy-[M[M]]M-[d]d [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] [yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] [yy]yy-[d]d-[M[M]]M HH:mm[:00] [yy]yy-[d]d-[M[M]]M [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fff][tt] [yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] [d]d-[M[M]]M-[yy]yy HH:mm[:00] [d]d-[M[M]]M-[yy]yy [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] [d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] [d]d-[yy]yy-[M[M]]M HH:mm[:00] [d]d-[yy]yy-[M[M]]M [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] zzz
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] [d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] zzz

詳細:

  • 月、日、年の値を区切るには、' - '、' / '、または ' を使うことができます。 。 わかりやすくするために、この表では、'-' の区切りのみを使用しています。

  • 月をテキストとして指定するには、3 つ以上の文字を使います。 1 つまたは 2 つの文字で表された月は、数値として解釈されます。

  • 時刻の値を区切るには、"" 記号を使います。

  • 角かっこで囲まれた文字はオプションです。

  • 文字 'tt' で AM|PM|am|pm を指定します。 AM が既定値です。 'tt' を指定すると、時間の値 (hh) を 0 から 12 の範囲にする必要があります。

  • 文字 'zzz' では、システムの現在のタイム ゾーンに対するオフセットが {+|-}HH:ss] の形式で指定されます。

数値型にリテラルを挿入します

次の表では、数値型を使用する SQL Server PDW 列にリテラル値を読み込むための既定の形式と変換規則を定義します。

bit データ型

次の表では、bit 型の列にリテラル値を読み込むための既定の形式と規則を定義します。 空の文字列 ('') または空白 (' ') のみを含む文字列は 0 に変換されます。

入力データの種類 入力データの例 bit データ型への変換
整数 形式の文字列リテラル 'ffffffffff'

例: '1' または '321'
文字列リテラルとして書式設定された整数値に、負の値を含めることはできません。 例えば、値 '-123' はエラーを生成します。

1 より大きい値は 1 に変換されます。 例えば、値 '123' は 1 に変換されます。
文字列リテラル 'TRUE' または 'FALSE'

例: 'true'
値 'TRUE' は 1 に変換され、値 'FALSE' は 0 にに変換されます。
整数 リテラル fffffffn

例: 1 または 321
1 より大きい値または 0 未満の値は 1 に変換されます。 たとえば、値 123 と -123 は 1 に変換されます。
10 進リテラル fffnn.fffn

例: 1234.5678
1 より大きい値または 0 未満の値は 1 に変換されます。 例えば、値 123.45 と -123.45 は 1 に変換されます。

Decimal データ型

次の表では、decimal (p,s) 型の列にリテラル値を読み込むための規則を定義します。 データ変換規則は、SQL Server の場合と同じです。 詳細については、データ型の変換 (データベース エンジン) を参照してください。

入力データの種類 入力データの例
整数 リテラル 321312313123
10 進リテラル 123344.34455

float データ型と実際のデータ型

次の表では、float 型または real 型の列にリテラル値を読み込むための規則を定義します。 データ変換規則は、SQL Server の場合と同じです。 詳細については、データ型の変換 (データベース エンジン) を参照してください。

入力データの種類 入力データの例
整数 リテラル 321312313123
10 進リテラル 123344.34455
浮動小数点リテラル 3.12323E+14

int、bigint、tinyint、smallint データ型

次の表では、intbiginttinyint、または smallint 型の列にリテラル値をロードするためのルールを定義しています。 データ ソースは、指定されたデータ型で許可されている範囲を超えることはできません。 例えば、tinyint の範囲は 0 から 255、int の範囲は -2,147,483,648 から 2,147,483,647 です。

入力データの種類 入力データの例 整数型 (Integer) への変換
整数 リテラル 321312313123
10 進リテラル 123344.34455 小数点の右側の値は切り捨てられます。

money と smallmoney のデータ型

Money リテラル値は数値文字列で表し、オプションで小数点および通貨記号をプレフィックスとして付加することができます。 データ ソースは、指定されたデータ型で許可されている範囲を超えることはできません。 例えば、smallmoney の範囲は -214,748.3648 から 214,748.3647 で、金額 の範囲は -922,337,203,685,477.5808 から 922,337,203,685,477.5807 です。 次の表は、money または smallmoney 型の列にリテラル値をロードするためのルールを定義します。

入力データの種類 入力データの例 money または smallmoney データ型への変換
整数 リテラル 321312 小数点の後の欠落した数字は、値が挿入されるときに 0 に設定されます。 たとえば、リテラル 12345 は 12345.0000 として挿入されます
10 進リテラル 123344.34455 小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。 例えば、値 123344.34455 は 123344.3446 として挿入されます。
Money リテラル $123456.7890 通貨記号は値と共に挿入されません。

小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。

文字列型へのリテラルの挿入

次の表では、文字列型を使用する SQL Server PDW 列にリテラル値を読み込むための既定の形式と変換規則を定義します。

char、varchar、nchar、および nvarchar のデータ型

次の表では、charvarcharncharnvarchar 型の列にリテラル値をロードするためのデフォルトの形式とルールを定義しています。 データ ソースの長さは、データ型に指定されたサイズを超えることはできません。 データ ソースの長さが char または nchar データ型のサイズより小さい場合、データ型のサイズに達するために、データは空白スペースで右側に埋め込まれます。

入力データの種類 入力データの例 文字データ型への変換
文字列リテラル 形式: 'character string'

例: 'abc'
NA
Unicode 文字列リテラル 形式: N'character string'

例: N'abc'
NA
整数 リテラル 形式: ffffffffffn

例: 321312313123
NA
10 進リテラル 形式: ffffff.fffffff

例: 12344.34455
NA
Money リテラル 形式: $ffffff.fffnn

例: $123456.99
オプションの通貨記号は、値と共に挿入されません。 通貨記号を挿入するには、値を文字列リテラルとして挿入します。 これは、すべてのリテラルを文字列リテラルとして扱うローダーの形式と一致します。

コンマは使用できません。

小数点の後の桁数が 2 を超える場合、値は最も近い値に切り上げられます。 例えば、値 123.946789 は 123.95 として挿入されます。

CONVERT 関数を使用して money リテラルを挿入する場合は、既定のスタイル 0 (コンマなし、小数点の後に 2 桁) のみを使用できます。

全般的な解説

dwloader は、SMP SQL Server が実行するのと同じ暗黙的な変換を実行しますが、SMP SQL Server がサポートするすべての暗黙的な変換をサポートしているわけではありません。