本文說明將資料載入 PDW 時,dwloader 命令列載入器所支援的輸入資料格式和隱含資料類型轉換。 當輸入資料不符合 SQL Server PDW 目標資料表中的資料類型時,就會發生隱含的資料轉換。 設計載入程序時,請使用這項資訊,以確保您的資料順利載入 SQL Server PDW。
將常值插入二進位類型
下表定義可接受的常值類型、格式和轉換規則,以將常值載入 binary (n) 或 varbinary(n) 類型的 SQL Server PDW 資料行。
輸入資料類型 | 輸入資料範例 | 轉換為二進位或 varbinary 資料類型 |
---|---|---|
二進位常值 | [0x]hexidecimal_string 範例:12Ef 或 0x12Ef |
"0x" 前置詞是可選的。 資料來源長度不能超過為資料類型指定的位元組數目。 如果資料來源長度小於 binary 資料類型的大小,則以零填補右邊的資料,以達到資料類型大小。 |
將常值插入日期和時間類型
日期和時間常值是利用特定格式的字串常值來表示,並以單引號括住。 下表定義允許的常值類型、格式和轉換規則,以將日期或時間常值載入 datetime、smalldatetime、date、time、datetimeoffset 或 datetime2 類型的資料行。 資料表會定義指定資料類型的預設格式。 您可以在日期時間格式一節中定義其他可指定的格式。 日期和時間常值不能包含前置或後置空格。 date、smalldatetime 和 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 資料類型
下表會定義規則,以將常值載入到 float 或 real 類型的資料行。 資料轉換規則與 SQL Server 相同。 如需詳細資訊,請參閱 MSDN 上的資料類型轉換 (資料庫引擎)。
輸入資料類型 | 輸入資料範例 |
---|---|
整數常值 | 321312313123 |
十進位常值 | 123344.34455 |
浮點數常值 | 3.12323E+14 |
int、bigint、tinyint、smallint 資料類型
下表定義將常值載入到 int、bigint、tinyint 或 smallint 類型資料行的規則。 資料來源不能超過指定資料類型所允許的範圍。 例如,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。 下表定義將常值載入到 money 或 smallmoney 類型資料行的規則。
輸入資料類型 | 輸入資料範例 | 轉換成 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 資料類型
下表定義預設格式和轉換規則,以將常值載入 char、varchar、nchar 和 nvarchar 類型的資料行。 資料來源長度不能超過為資料類型指定的大小。 如果資料來源長度小於 char 或 nchar 資料類型的大小,則以空格填補右邊的資料,以達到資料類型大小。
輸入資料類型 | 輸入資料範例 | 轉換成字元資料類型 |
---|---|---|
字串常值 | 格式:'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 支援的所有隱含轉換。