本文說明 dwloader Command-Line Loader 在將資料載入 PDW 時所支援的輸入資料格式及隱含資料型態轉換。 當輸入資料與 SQL Server PDW 目標資料表中的資料型別不符時,隱含資料轉換就會發生。 設計載入流程時請使用此資訊,確保資料能順利載入 SQL Server PDW。
在二進位型別中插入常值
下表定義了將字面值載入 SQL Server PDW 欄位(類型為 二進位 (n) 或 varbinary(n) 時,所接受的文字型別、格式與轉換規則。
| 輸入資料類型 | 輸入資料範例 | 轉換為二進位或變數資料型態 |
|---|---|---|
| 二進位字面 | [0x]hexidecimal_string 範例:12EF 或 0x12Ef |
0x 前綴是可選的。 資料來源長度不得超過該資料型別所指定的位元組數。 若資料來源長度小於 二進位 資料型態大小,資料會以零填充至右邊以達到資料型別大小。 |
在日期與時間類型中插入文字常數
日期與時間字面值以特定格式的字符串文字表示,並以單引號包圍。 以下表格定義了將日期或時間字面值載入到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。 |
| 以 日期 格式的字串常量 | '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。 |
| 以日期格式的字串字面值 | 「yyyy-MM-dd」 範例:『2007-05-08』 |
插入時間值(小時、分鐘、秒與分數)時設為 0。 |
日期資料型別
下表定義了將文字值載入 date 欄位的預設格式與規則。 空字串('')會轉換成預設值 '1900-01-01'。 僅包含空白(' ')的字串會產生錯誤。
| 輸入資料類型 | 輸入資料範例 | 轉換為日期資料型別 |
|---|---|---|
| 以 日期 格式的字串常量 | 'yyyy-MM-dd' 範例:『2007-05-08』 |
時間資料型別
下表定義了將文字值載入 time 型態欄位的預設格式與規則。 空字串('')會轉換成預設值 '00:00:00.0000'。 僅包含空白(' ')的字串會產生錯誤。
| 輸入資料類型 | 輸入資料範例 | 轉換為時間資料型別 |
|---|---|---|
| 時間格式中的字串文字 | 「hh:mm:ss.fffffff」 範例:『12:35:29.1234567』 |
如果資料來源的精度(小數位數)小於或等於 時間 資料類型的精度,則資料會在右側填充零。 例如,字面值 '12:35:29.123' 會入為「12:35:29.12300000'。 |
datetimeoffset 資料型別
下表定義了將文字值載入 datetimeoffset (n) 型樣欄位的預設格式與規則。 預設格式為「yyyy-MM-dd hh:mm:ss.fffffff {+|-}hh:mm」。 空字串('')會轉換成預設值 '1900-01-01 12:00:00.000000000 +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。 |
| 以 日期 格式的字串常量 | 'yyyy-MM-dd' 範例:『2007-05-08』 |
插入時間值(小時、分鐘、秒與分數)時設為 0。 例如,字面上的「2007-05-08」會插入為「2007-05-08 00:00:00.00000000 +00:00」。 |
| datetime2 格式的字串常值 | 「yyyy-MM-dd hh:mm:ss.fffffff」 範例:『2007-05-08 12:35:29.1234567』 |
來源資料在日期時間偏移欄位中不得超過指定的分秒數。 若資料來源的分秒數較小或相等,則資料右側會填充零。 例如,若資料型態為 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 (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。 |
| 以 日期 格式的字串常量 | 'yyyy-MM-dd' 範例:『2007-05-08』 |
插入時間值(小時、分鐘、秒與分數)時設為 0。 例如,字面上的「2007-05-08」會插入為「2007-05-08 12:00:00.000000000」。 |
| datetime2 格式的字串常值 | 「yyyy-mm-dd hh:mm:ss:fffffff」 範例:『2007-05-08 12:35:29.1234567』 |
如果資料來源中的資料和時間成分小於或等於 datetime2(n) 所指定的值,則會插入該資料;否則會產生錯誤。 |
日期時間格式
Dwloader 支援以下資料格式,適用於其載入 SQL Server PDW 的輸入資料。 更多細節請見表格後面。
| 日期時間 | 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-[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 欄位(使用數字型別)的預設格式與轉換規則。
位元資料型別
下表定義了將文字值載入 type bit 欄位的預設格式與規則。 空字串('')或僅包含空白的字串(' ')會被轉換成 0。
| 輸入資料類型 | 輸入資料範例 | 轉換為位元資料型別 |
|---|---|---|
| 整數格式的字串文字 | 「呼呼呼呼」 範例:「1」或「321」 |
整數值格式化為字串文字時,不能包含負值。 例如,值 '-123' 會產生錯誤。 大於1的數值會轉換為1。 例如,數值「123」會轉換成 1。 |
| 字串字面值 | 「真」或「假」 範例:「'true'」 |
「TRUE」的值會轉換成 1;「FALSE」的值會被轉換成 0。 |
| 整數常值 | If "fffffffn" is understood in the context and the context was missing, then the translation would require additional information to provide an accurate and specific translation. If it's a placeholder or an acronym that's supposed to remain untranslated, it should be kept as "fffffffn" (假設沒有另外的來源或信息指引其具體意義)。 範例:1 或 321 |
大於1或小於0的數值會轉換為1。 例如,123 和 -123 的值會被轉換成 1。 |
| 十進位字面值 | fffnn.fffn 範例:1234.5678 |
大於1或小於0的數值會轉換為1。 例如,123.45 和 -123.45 的值會轉換成 1。 |
十進位資料型別
下表定義了將文字值載入十 進 位(p,s)欄位的規則。 資料轉換規則與 SQL Server 相同。 欲了解更多資訊,請參閱 MSDN 上的資料型別轉換(資料庫引擎)。
| 輸入資料類型 | 輸入資料範例 |
|---|---|
| 整數常值 | 321312313123 |
| 十進位字面值 | 123344.34455 |
float 與實數資料型態
下表定義了將文字值載入 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 | 小數點右側的數值會被截斷。 |
貨幣與小額貨幣資料類型
貨幣的字面價值以一串數字表示,並可選擇使用小數點,並以可選的貨幣符號作為前綴。 資料來源不得超過指定資料型別允許的範圍。 例如, 小額貨幣 的範圍為 -214,748.3648 至 214,748.3647,貨幣 範圍為 - 922,337,203,685,477.5808 至 922,337,203,685,477.5807。 下表定義了將字面值載入 money 或 smallmoney 類型的欄位的規則。
| 輸入資料類型 | 輸入資料範例 | 轉換為貨幣或小錢資料型別 |
|---|---|---|
| 整數常值 | 321312 | 小數點後的缺位數字在插入該值時設為 0。 例如,字面值 12345 插入為 12345.0000 |
| 十進位字面值 | 123344.34455 | 若小數點後的數字數超過4,則將該值向上取整至最接近的數值。 例如,值 123344.34455 會入為 123344.3446。 |
| 金錢的字面意義 | $123456.7890 | 貨幣符號不會隨價值一併插入。 若小數點後的數字數超過4,則將該值向上取整至最接近的數值。 |
在字串類型中插入文字
以下表格定義了將字面值載入使用 SQL Server PDW 欄位(使用字串型別)的預設格式與轉換規則。
char、varchar、nchar 及 nvarchar 資料型別
下表定義了將字面值載入 char、 varchar、 nchar 和 nvarchar 型別欄位的預設格式與規則。 資料來源長度不得超過資料型別所指定的大小。 若資料來源長度小於 char 或 nchar 資料型別的大小,資料會以空白填充右側以達到資料型別大小。
| 輸入資料類型 | 輸入資料範例 | 轉換為字元資料型別 |
|---|---|---|
| 字串字面值 | 格式:「字串」 範例:「abc」 |
NA |
| Unicode 字串字面值 | 格式:N'字串' 範例:N'abc' |
NA |
| 整數常值 | 格式:ffffffffffn 範例:321312313123 |
NA |
| 十進位字面 | 格式:ffffff.fffffff 範例:12344.34455 |
NA |
| 錢是字面上的 | 格式:$ffffff.fffnn 範例:$123456.99 |
選用的貨幣符號不會隨值一併插入。 要插入貨幣符號,請將該值以字串字面值形式插入。 這會符合載入器的格式,載入器將每個字面值視為字串字面值。 不允許使用逗號。 若小數點後的位數超過2,則取整至最接近的數值。 例如,值 123.946789入為 123.95。 使用 CONVERT 函式插入貨幣字面值時,僅允許預設的 0 型(無逗號且小數點後有兩位數)。 |
一般備註
dwloader 執行與 SMP SQL Server 相同的隱式轉換,但不支援 SMP SQL Server 所支援的所有隱含轉換。