共用方式為


dwloader 的資料類型轉換規則 - Analytics Platform Service (PDW)

本文說明將資料載入 PDW 時,dwloader 命令列載入器所支援的輸入資料格式和隱含資料類型轉換。 當輸入資料不符合 SQL Server PDW 目標資料表中的資料類型時,就會發生隱含的資料轉換。 設計載入程序時,請使用這項資訊,以確保您的資料順利載入 SQL Server PDW。

將常值插入二進位類型

下表定義可接受的常值類型、格式和轉換規則,以將常值載入 binary (n) 或 varbinary(n) 類型的 SQL Server PDW 資料行。

輸入資料類型 輸入資料範例 轉換為二進位或 varbinary 資料類型
二進位常值 [0x]hexidecimal_string

範例:12Ef 或 0x12Ef
"0x" 前置詞是可選的。

資料來源長度不能超過為資料類型指定的位元組數目。

如果資料來源長度小於 binary 資料類型的大小,則以零填補右邊的資料,以達到資料類型大小。

將常值插入日期和時間類型

日期和時間常值是利用特定格式的字串常值來表示,並以單引號括住。 下表定義允許的常值類型、格式和轉換規則,以將日期或時間常值載入 datetimesmalldatetimedatetimedatetimeoffsetdatetime2 類型的資料行。 資料表會定義指定資料類型的預設格式。 您可以在日期時間格式一節中定義其他可指定的格式。 日期和時間常值不能包含前置或後置空格。 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'

範例:'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'
來源資料不能超過三個小數位。 例如,將插入常值 '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 資料類型
date 格式的字串常值 'yyyy-mm-dd'

範例:'2007-05-08'

time 資料類型

下表定義預設格式和規則,以將常值插入 time 類型的資料行。 空字串 ('') 會轉換成預設值 '00:00:00.0000'。 僅包含空白的字串 (' ') 會產生錯誤。

輸入資料類型 輸入資料範例 轉換為 time 資料類型
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) 的資料行會有兩個小數位。

輸入資料類型 輸入資料範例 轉換為 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'

範例:'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) 的資料行會有兩個小數位。

輸入資料類型 輸入資料範例 轉換成 datetime2 資料類型
datetime 格式的字串常值 'yyyy-MM-dd hh:mm:ss[.fff]'

範例:'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:fffffff'

範例:'2007-05-08 12:35:29.1234567'
如果資料來源包含的日期和時間元件小於或等於 datetime2(n) 中指定的值,則會插入資料,否則會產生錯誤。

DateTime 格式

對於載入 SQL Server PDW 的輸入資料,Dwloader 支援下列資料格式。 資料表後面會列出更多詳細資料。

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

詳細資料:

  • 若要分隔月、日和年值,可以使用 ' - '、' / ' 或 ' .' 。 為了簡單起見,此資料表只使用 ' - ' 分隔符號。

  • 若要以文字格式指定月份,請使用三個以上的字元。 含有 1 或 2 個字元的月份會被視為數字。

  • 若要分隔時間值,請使用 ' : ' 符號。

  • 括在方括號中的字母是選擇性的。

  • 字母 'tt' 指示 AM|PM|am|pm。 預設值是 AM。 指定 'tt' 時,小時值 (hh) 必須介於 0 到 12 之間。

  • 字母 'zzz' 會以 {+|-}HH:ss] 格式指定系統目前時區的時區偏差。

將常值插入數值類型

下表定義預設格式和轉換規則,以將常值載入使用數值類型的 SQL Server PDW 資料行。

bit 資料類型

下表定義預設格式和轉換規則,以將常值載入 bit 類型的資料行。 空字串 ('') 或只包含空白的字串 (' ') 會轉換成 0。

輸入資料類型 輸入資料範例 轉換成 bit 資料類型
integer 格式的字串常值 'ffffffffff'

範例:'1' 或 '321'
格式化為字串常值的整數值不能包含負值。 例如,值 '-123' 會產生錯誤。

大於 1 的值會轉換成 1。 例如,值 '123' 會轉換成 1。
字串常值 'TRUE' 或 'FALSE'

範例:'true'
TRUE 值會轉換成 1;FALSE 值會轉換成 0。
整數常值 fffffffn

範例:1 或 321
大於 1 或小於 0 的值會轉換成 1。 例如,值 +123 和 -123 會轉成 1。
十進位常值 fffnn.fffn

範例:1234.5678
大於 1 或小於 0 的值會轉換成 1。 例如,值 123.45 和 -123.45 會轉換成 1。

decimal 資料類型

下表會定義規則,以將常值載入到 decimal (p,s) 類型的資料行。 資料轉換規則與 SQL Server 相同。 如需詳細資訊,請參閱 MSDN 上的資料類型轉換 (資料庫引擎)

輸入資料類型 輸入資料範例
整數常值 321312313123
十進位常值 123344.34455

float 和 real 資料類型

下表會定義規則,以將常值載入到 floatreal 類型的資料行。 資料轉換規則與 SQL Server 相同。 如需詳細資訊,請參閱 MSDN 上的資料類型轉換 (資料庫引擎)

輸入資料類型 輸入資料範例
整數常值 321312313123
十進位常值 123344.34455
浮點數常值 3.12323E+14

int、bigint、tinyint、smallint 資料類型

下表定義將常值載入到 intbiginttinyintsmallint 類型資料行的規則。 資料來源不能超過指定資料類型所允許的範圍。 例如,tinyint 的範圍是 0 到 255,int 的範圍是 -2,147,483,648 到 2,147,483,647。

輸入資料類型 輸入資料範例 轉換成整數資料類型
整數常值 321312313123
十進位常值 123344.34455 會截斷小數點右邊的值。

money 和 smallmoney 資料類型

money 常值是用數字字串來表示,可選擇含有小數點,前面也可選擇附加貨幣符號。 資料來源不能超過指定資料類型所允許的範圍。 例如,smallmoney 的範圍是 -214,748.3648 到 214,748.3647,而 money 的範圍是 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。 下表定義將常值載入到 moneysmallmoney 類型資料行的規則。

輸入資料類型 輸入資料範例 轉換成 money 或 smallmoney 資料類型
整數常值 321312 插入值時,小數點後面的遺漏位數會設定為 0。 例如,常值 12345 會插入為 12345.0000
十進位常值 123344.34455 如果小數點之後的位數超過 4 位,該值會四捨五入為最接近的值。 例如,值 123344.34455 會插入為 123344.3446。
Money 常值 $123456.7890 貨幣符號不會隨值一起插入。

如果小數點之後的位數超過 4 位,該值會四捨五入為最接近的值。

將常值插入字串類型

下表定義預設格式和轉換規則,以將常值載入使用字串類型的 SQL Server PDW 資料行。

char、varchar、nchar 和 nvarchar 資料類型

下表定義預設格式和轉換規則,以將常值載入 charvarcharncharnvarchar 類型的資料行。 資料來源長度不能超過為資料類型指定的大小。 如果資料來源長度小於 charnchar 資料類型的大小,則以空格填補右邊的資料,以達到資料類型大小。

輸入資料類型 輸入資料範例 轉換成字元資料類型
字串常值 格式:'character string'

範例:'abc'
NA
Unicode 字串常值 格式:N'character string'

範例:N'abc'
NA
整數常值 格式:ffffffffffn

範例:321312313123
NA
十進位常值 格式: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 支援的所有隱含轉換。