INSERT を使用して Parallel Data Warehouse にデータを読み込みます
tsql INSERT ステートメントを使用して、SQL Server Parallel Data Warehouse (PDW) 分散テーブルまたはレプリケート テーブルにデータを読み込むことができます。 INSERT の詳細については、「INSERT」を参照してください。 レプリケート テーブルと分散テーブル内のすべての非ディストリビューション列の場合、PDW は SQL Server を使用して、ステートメントで指定されたデータ値を宛先列のデータ型に暗黙的に変換します。 SQL Server データ変換規則の詳細については、「SQL のデータ型変換」を参照してください。 ただし、ディストリビューション列の場合、PDW は SQL Server でサポートされる暗黙的な変換のサブセットのみをサポートします。 したがって、INSERT ステートメントを使用してデータをディストリビューション列に読み込む場合は、次の表に定義されている形式のいずれかでソース データを指定する必要があります。
バイナリ型にリテラルを挿入します
次の表では、binary (n) 型または varbinary(n) 型のディストリビューション列にリテラル値を挿入するための、受け入れ可能なリテラル型、形式、変換規則を定義します。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
バイナリ リテラル | 0xhexidecimal_string 例: 0x12Ef |
バイナリ リテラルは前に 0x を付ける必要があります。 データ ソースの長さは、データ型に指定されたバイト数を超えることはできません。 データ ソースの長さが binary データ型のサイズより小さい場合、データはデータ型のサイズに達するためにゼロで右側に埋め込まれます。 |
日付と時刻の型にリテラルを挿入します
日付と時刻のリテラルは、特定の形式の日付文字値で表し、単一引用符で囲みます。 次の表では、datetime、smalldatetime、date、time、datetimeoffset、または datetime2 型の SQL Server PDW ディストリビューション列に日付または時刻リテラルを挿入するために使用できるリテラル型、形式、変換規則を定義します。
datetime データ型
次の表では、datetime 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 空の文字列 ('') は既定値 '1900-01-01 12:00:00.000' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
datetime 形式の文字列リテラル | 'YYYY-MM-DD hh:mm:ss[.nnn]' 例: '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' 例: '2007-05-08 12:35' |
秒と残りの小数桁の数字は、値が挿入されるときに 0 に設定されます。 |
date 形式の文字列リテラル | 'YYYY-MM-DD' 例: '2007-05-08' |
時間値 (時、分、秒、分数) は、値が挿入されるときに 12:00:00.000 に設定されます。 |
datetime2 形式の文字列リテラル | 'YYYY-MM-DD hh:mm:ss.nnnnnnn' 例: '2007-05-08 12:35:29.1234567' |
ソース データは、3 桁の小数桁を超えることはできません。 例えば、リテラル '2007-05-08 12:35:29.123' が挿入されますが、値 '2007-05-08 12:35:29.1234567' はエラーとなります。 |
smalldatetime データ型
次の表では、smalldatetime 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 空の文字列 ('') は既定値 '1900-01-01 12:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
smalldatetime 形式の文字列リテラル | 'YYYY-MM-DD hh:mm' または 'YYYY-MM-DD hh:mm:00' 例: '2007-05-08 12:00' または '2007-05-08 12:00:00' |
ソース データには、年、月、日、時、分の値が必要です。 秒はオプションで、存在する場合は値 00 に設定する必要があります。 その他の値は、エラーとなります。 |
date 形式の文字列リテラル | 'YYYY-MM-DD' 例: '2007-05-08' |
時間値 (時、分、秒、分数) は、値が挿入されるときに 0 に設定されます。 |
日付 データ型
次の表では、日付 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 空の文字列 ('') は既定値 '1900-01-01' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
date 形式の文字列リテラル | 'YYYY-MM-DD' 例: '2007-05-08' |
これは、受け入れられる唯一の形式です。 |
時間データ型
次の表では、時間 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 空の文字列 ('') は既定値 '00:00:00.0000' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
time 形式の文字列リテラル | 'hh:mm:ss.nnnnnnn' 例: '12:35:29.1234567' |
データ ソースの有効桁数 (小数部の桁数) が time データ型の有効桁数よりも小さいか等しい場合、データは右にゼロで埋め込まれます。 例えば、リテラル値 '12:35:29.123' は '12:35:29.1230000' として挿入されます。 ターゲット データ型よりも有効桁数が大きい値は拒否されます。 |
datetimeoffset データ型
次の表では、datetimeoffset 型 (n) のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 既定の形式は 'YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm' です。 空の文字列 ('') は既定値 '1900-01-01 12:00:00.0000000 +00:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。 小数部の桁数は、列定義によって異なります。 例えば、datetimeoffset (2) として定義された列には、2 桁の小数部が含まれます。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
datetime 形式の文字列リテラル | 'YYYY-MM-DD hh:mm:ss[.nnn]' 例: '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' 例: '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.nnnnnnn' 例: '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.nnnnnnn {+|-} 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.nnnnnnn' です。 空の文字列 ('') は既定値 '1900-01-01 12:00:00' に変換されます。 空白 (' ') のみを含む文字列はエラーとなります。 小数部の桁数は、列定義によって異なります。 例えば、datetime2 (2) として定義された列には、2 桁の小数部が含まれます。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
datetime 形式の文字列リテラル | 'YYYY-MM-DD hh:mm:ss[.nnn]' 例: '2007-05-08 12:35:29.123' |
秒の小数部はオプションであり、値が挿入されるときに 0 に設定されます。 ターゲット データ型よりも小数部の桁数が多い値は拒否されます。 |
smalldatetime 形式の文字列リテラル | 'YYYY-MM-DD hh:mm' 例: '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:nnnnnnn' 例: '2007-05-08 12:35:29.1234567' |
データ ソースに datetime2(n) で指定された値以下のデータおよび時刻コンポーネントが含まれている場合は、データが挿入されます。それ以外の場合はエラーが生成されます。 |
数値型にリテラルを挿入します
次の表では、数値型を使用する SQL Server PDW ディストリビューション列にリテラル値を挿入するための許容される形式と変換規則を定義します。
bit データ型
次の表では、ビット 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 空の文字列 ('') または空白 (' ') のみを含む文字列は 0 に変換されます。
リテラルの種類 | format | 変換規則 |
---|---|---|
整数 形式の文字列リテラル | 'nnnnnnnnnn' 例: '1' または '321' |
文字列リテラルとして書式設定された整数値に、負の値を含めることはできません。 例えば、値 '-123' はエラーを生成します。 1 より大きい値は 1 に変換されます。 例えば、値 '123' は 1 に変換されます。 |
文字列リテラル | 'TRUE' または 'FALSE' 例: 'true' |
値 'TRUE' は 1 に変換され、値 'FALSE' は 0 にに変換されます。 |
整数 リテラル | nnnnnnnn 例: 1 または 321 |
1 より大きい値または 0 未満の値は 1 に変換されます。 たとえば、値 123 と -123 は 1 に変換されます。 |
10 進リテラル | nnnnn.nnnn 例: 1234.5678 |
1 より大きい値または 0 未満の値は 1 に変換されます。 例えば、値 123.45 と -123.45 は 1 に変換されます。 |
Decimal データ型
次の表では、10 進数 (p,s) 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 このデータ変換規則は、SQL Server の場合と同じです。 詳細については、「MSDN の データ型の変換」を参照してください。
リテラルの種類 | 形式 |
---|---|
整数 形式の文字列リテラル | 'nnnnnnnnnnnn' 例: '321312313123' |
10 進 形式の文字列リテラル | 'nnnnnn.nnnnn' 例: '123344.34455' |
整数 リテラル | nnnnnnnnnnnnnn 例: 321312313123 |
10 進リテラル | nnnnnn.nnnnn 例: '123344.34455' |
float データ型と実際のデータ型
次の表では、float 型または real 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 データ変換規則は、SQL Server の場合と同じです。 詳細については、「MSDN の データ型の変換」を参照してください。
リテラルの種類 | 形式 |
---|---|
整数 形式の文字列リテラル | 'nnnnnnnnnnnn' 例: '321312313123' |
10 進 形式の文字列リテラル | 'nnnnnn.nnnnn' 例: '123344.34455' |
浮動小数点 形式の文字列リテラル | 'n.nnnnnE+nn' 例: '3.12323E+14' |
整数 リテラル | nnnnnnnnnnnnnn 例: 321312313123 |
10 進リテラル | nnnnnn.nnnnn 例: 123344.34455 |
浮動小数点リテラル | n.nnnnnE+nn 例: 3.12323E+14 |
int、bigint、tinyint、smallint データ型
次の表では、int、bigint、tinyint、または smallint 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 データ ソースは、指定されたデータ型で許可されている範囲を超えることはできません。 例えば、tinyint の範囲は 0 から 255、int の範囲は -2,147,483,648 から 2,147,483,647 です。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
整数 形式の文字列リテラル | 'nnnnnnnnnnnnnn' 例: '321312313123' |
なし |
整数 リテラル | nnnnnnnnnnnnnnnn 例: 321312313123 |
なし |
10 進リテラル | nnnnnn.nnnnn 例: 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 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
整数 形式の文字列リテラル | 'nnnnnnnn' 例: '123433' |
小数点の後の欠落した数字は、値が挿入されるときに 0 に設定されます。 例えば、リテラル '12345' は 12345.0000 として挿入されます。 |
10 進 形式の文字列リテラル | 'nnnnnn.nnnnn' 例: '123344.34455' |
小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。 例えば、値 '123344.34455' は 123344.3446 として挿入されます。 |
money 形式の文字列リテラル | '$nnnnnn.nnnn' 例: '$123456.7890' |
オプションの通貨記号は、値と共に挿入されません。 小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。 |
整数 リテラル | nnnnnnnn 例: 123433 |
小数点の後の欠落した数字は、値が挿入されるときに 0 に設定されます。 例えば、リテラル 12345 は 12345.0000 として挿入されます。 |
10 進リテラル | nnnnnn.nnnnn 例: 123344.34455 |
小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。 例えば、値 123344.34455 は 123344.3446 として挿入されます。 |
Money リテラル | $nnnnnn.nnnn 例: $123456.7890 |
オプションの通貨記号は、値と共に挿入されません。 小数点の後の桁数が 4 を超える場合、値は最も近い値に切り上げられます。 |
文字列型へのリテラルの挿入
次の表では、文字列型を使用する SQL Server PDW 列にリテラル値を挿入するための許容される形式と変換規則を定義します。
char、varchar、nchar、および nvarchar のデータ型
次の表では、char、varchar、nchar、nvarchar 型のディストリビューション列にリテラル値を挿入するための許容される形式と規則を定義します。 データ ソースの長さは、データ型に指定されたサイズを超えることはできません。 データ ソースの長さが char または nchar データ型のサイズより小さい場合、データ型のサイズに達するために、データは空白スペースで右側に埋め込まれます。
リテラルの種類 | 形式 | 変換規則 |
---|---|---|
文字列リテラル | 形式: 'character string' 例: 'abc' |
なし |
Unicode 文字列リテラル | 形式: N'character string' 例: N'abc' |
なし |
整数 リテラル | 形式: nnnnnnnnnnn 例: 321312313123 |
なし |
10 進リテラル | 形式: nnnnnn.nnnnnnn 例: 12344.34455 |
なし |
Money リテラル | 形式: $nnnnnn.nnnnn 例: $123456.99 |
通貨記号は値と共に挿入されません。 通貨記号を挿入するには、値を文字列リテラルとして挿入します。 これは、すべてのリテラルを 文字列リテラルとして扱う dwloader ツールの形式と一致します。 コンマは使用できません。 小数点の後の桁数が 2 を超える場合、値は最も近い値に切り上げられます。 例えば、値 123.946789 は 123.95 として挿入されます。 CONVERT 関数を使用して money リテラルを挿入する場合は、既定のスタイル 0 (コンマなし、小数点の後に 2 桁) のみを使用できます。 |