CREATE EXTERNAL TABLE statement

雖然表格通常位於資料庫中,但外部表格位於文字型定界檔案,或在資料庫外部的固定長度格式檔案中

使用外部表格來執行下列動作:
  • 將資料儲存在資料庫外部,同時保留查詢該資料的能力。 若要將資料從資料庫卸載至外部檔案,請在下列其中一個 SQL 陳述式中指定外部表格作為目標表格:
    • INSERT SQL
    • SELECT INTO SQL
    • CREATE EXTERNAL TABLE AS SELECT SQL
  • 將資料從外部檔案載入至資料庫中的表格。 您可以執行強制轉型、結合及捨棄直欄等作業,以在載入期間操作資料。 若要將資料從外部表格載入至資料庫,請在 SELECT SQL 陳述式中使用 FROM 子句,就像您對任何其他表格所執行的動作一樣。
  • 將資料傳送至另一個應用程式。

使用外部表格進行「擷取 - 轉換 - 載入 (ETL)」處理程序的優點是可以使用一般 SQL 來執行它們。 因為 SQL 型 ETL 處理程序可以從任何 SQL 用戶端起始,所以不需要特殊 ETL 工具。

外部表格是下列其中一種類型:
具名
外部表格具有與一般表格類似的名稱及型錄項目。
暫時性
外部表格具有 SYSTET<number> 格式的系統產生名稱,且沒有型錄項目。 例如,系統可能會建立暫時性外部表格來保留查詢的結果。 這類表格的生命期限是查詢的持續時間。

呼叫

此陳述式可以內嵌在應用程式中,或使用動態 SQL 陳述式發出。 它是可執行的陳述式,只有在 DYNAMICRULES 執行行為對套件有效時才能動態準備 (SQLSTATE 42509)。

授權

陳述式授權 ID 所保留的專用權必須具有 DBADM 權限或下列專用權或權限:
  • CREATETAB 權限
  • 下列其中一個專用權或權限:
    • 表格空間上的 USE 專用權
    • SYSADM 權限
    • SYSCTRL 權限
  • 下列其中一個專用權或權限:
    • 資料庫上的 IMPLICIT_SCHEMA 權限(如果表格的隱含或明確綱目名稱不存在)
    • 綱目的 CREATEIN 專用權(如果表格的綱目名稱指的是現有綱目)
    • 綱目的 SCHEMAADM 權限(如果表格的綱目名稱指的是現有綱目)
如果正在定義子表格,則必須符合下列其中一個條件:
  • 授權 ID 必須與表格階層的根表格擁有者相同。
  • 授權 ID 所保留的專用權必須在包含表格階層的根表格的綱目上包括 SCHEMAADM 權限。
  • 授權 ID 所保留的專用權必須包括 DBADM 權限。

語法

此陳述式的語法視要建立的外部表格本質而定:
  • 使用下列語法,在型錄中建立新外部表格的表格定義。 指定表格名稱是必要的,因此產生的外部表格是具名表格。 必須指定 DATAOBJECT 或 FILE_NAME 選項,才能識別目標檔。
    Read syntax diagramSkip visual syntax diagram CREATE EXTERNAL TABLE table-name (,column-definition)LIKEtable-name1view-namenickname USING ( optionoption-value)
  • 透過下列語法來使用現有表格作為新外部表格的範本,並將來源表格的內容移入其中。 如果此陳述式明確指定表格名稱,則產生的外部表格是具名表格;否則,產生的外部表格是暫時性表格。 檔名必須由 file-name 參數或 DATAOBJECT 或 FILE_NAME 選項指定。
    Read syntax diagramSkip visual syntax diagram CREATE EXTERNAL TABLE table-name file-name USING ( optionoption-value) AS fullselect
如果您指定一或多個直欄定義,則下列其他參數適用:
column-definition
Read syntax diagramSkip visual syntax diagram column-name built-in-typeNOT NULL
built-in-type
Read syntax diagramSkip visual syntax diagramSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( precision-integer,0, scale-integer)FLOAT(53)( integer)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( integerOCTETSCODEUNITS32)VARCHARCHARACTERCHARVARYING( integerOCTETSCODEUNITS32)FOR BIT DATACLOBCHARACTERCHARLARGE OBJECT(65535)( integerKOCTETSCODEUNITS32)GRAPHIC(1)( integerCODEUNITS16CODEUNITS32)VARGRAPHIC( integerCODEUNITS16CODEUNITS32)DBCLOB(32767)( integerKCODEUNITS16CODEUNITS32)NCHARNATIONALCHARCHARACTER(1)( integer)NVARCHARNCHAR VARYINGNATIONALCHARCHARACTERVARYING( integer)NCLOBNCHAR LARGE OBJECTNATIONAL CHARACTER LARGE OBJECT(16383)( integerK)BINARY(1)( integer)VARBINARYBINARY VARYING(integer)BLOBBINARY LARGE OBJECT(65535)( integerK)DATETIMETIMESTAMP(6)(integer)BOOLEAN

說明

table-name
外部表格的名稱。 名稱(包括隱含或明確限定元)不得識別已在型錄中說明的表格、視圖、暱稱或別名。 綱目名稱不能是 SYSIBM、SYSCAT、SYSFUN 或 SYSSTAT (SQLSTATE 42939)。
file-name
將包含要建立的外部表格之檔案(或可視為檔案的任何媒體)的完整名稱。 如果指定此參數,則無法指定 DATAOBJECT 或 FILE_NAME 選項。
如果輸入資料檔已 gzip 壓縮,則會偵測到此情況,且 Db2® 伺服器會將資料解壓縮。 可以使用 COMPRESS GZIP 選項,但載入 gzip 壓縮檔並非必要。
如果輸入資料檔已 lz4 壓縮,則必須指定 COMPRESS LZ4 選項。

當 REMOTESOURCE 選項設為 LOCAL(這是其預設值)且 extbl_strict_io 配置參數設為 NO 時,外部表格檔案的路徑是絕對路徑,必須是 extbl_location 配置參數指定的其中一個路徑。 否則,外部表格檔案的路徑相對於 extbl_location 配置參數所指定的路徑,後面接著表格定義者的授權 ID。 例如,如果 extbl_location 設為 /home/xyz,且表格定義者的授權 ID 為 user1,則外部表格檔案的路徑相對於 /home/xyz/user1/

檔名必須是有效的 UTF-8 字串。
對於載入作業,下列條件適用:
  • 該檔案必須已存在。
  • 需要的許可權:
    • 如果外部表格是具名外部表格,則擁有者必須具有檔案的讀取權及 LOGDIR 目錄的寫入權。
    • 如果外部表格是暫時性外部表格,則陳述式授權 ID 必須具有檔案的讀取權及 LOGDIR 目錄的寫入權。
對於卸載作業,下列條件適用:
  • 如果檔案存在,則會改寫該檔案。
  • 需要的許可權:
    • 如果外部表格是具名外部表格,則擁有者必須對此檔案的目錄具有讀取及寫入權。
    • 如果外部表格是暫時性表格,則陳述式授權 ID 必須對此檔案的目錄具有讀寫權。
column-definition
定義直欄的屬性。
column-name
命名表格的直欄。 名稱不能完整,且相同的名稱不能用於表格的多個直欄 (SQLSTATE 42711)。
built-in-type
下列其中一個內建資料類型:
SMALLINT
小整數。
[INTEGER | INT]
大整數。
BIGINT
大整數。
[DECIMAL | DEC | NUMERIC | NUM] (precision-integerscale-integer)
十進位數。
  • 精準度整數指定總位數。 它必須在 1 - 31 範圍內。 預設值為 5。
  • 小數位數整數指定小數點右邊的位數。 它不能是負數,也不能超出精準度。 預設值是 5。
FLOAT(integer)
單一或倍精準度浮點數字。 如果指定的長度在範圍內:
  • 1 - 24,數字使用單一精準度
  • 25 - 53,數字使用倍精準度
您可以指定下列項目,而非 FLOAT:
REAL
適用於單精準度浮點。
DOUBLE
適用於倍精準度浮點。
DOUBLE PRECISION
適用於倍精準度浮點。
FLOAT
適用於倍精準度浮點。
DECFLOAT(precision-integer)
小數浮點數字。 精準度整數指定總位數,可以是 16 或 34。 預設值為 34。
[CHARACTER | CHAR](integer [OCTETS | CODEUNITS32])
指定字碼單位數目的固定長度字串。 此數字的範圍可以是 1 - 255 OCTETS 或 1 - 63 CODEUNITS32。 預設值為 1。
[VARCHAR | CHARACTER VARYING | CHAR VARYING](integer [OCTETS | CODEUNITS32])
可變長度字串,其最大長度為指定的字碼單位數目。 此數字的範圍可以是 1 - 32672 OCTETS 或 1 - 8168 CODEUNITS32。
關於位元資料
指定將直欄內容視為位元(二進位)資料。 在與其他系統交換資料期間,不會執行字碼頁轉換。 無論資料庫對照順序為何,都會以二進位來執行比較。
FOR BIT DATA 子句不能與字串單元 CODEUNITS32 一起指定 (SQLSTATE 42613)。
[CLOB | 字元大型物件 | 字元大型物件] (integer [K] [OCTETS | CODEUNITS32])
字元大型物件字串,其長度上限為指定的編碼單位數目。 預設長度上限為 65,535 個位元組。
如果您要將長度整數乘以 1024 ,請指定 K (kilo) 乘數。
  • 無論您是否使用 K 乘數,產生的長度都受限於外部表格中 CLOB 直欄的長度上限,即 65,535 OCTETS、32,767 CODEUNITS16或 16,383 CODEUNITS32。 請注意,64K OCTETS 和 16K CODEUNITS32 每一個都超出長度上限 1,因此不容許使用。
  • 在資料類型與長度規格之間或在長度整數與 K 乘數之間容許任何空格數 (包括零空格)。 例如,下列規格都相等且有效:
    CLOB(50K)
    CLOB(50 K)
    CLOB (50   K)
  • K 乘數可以大寫或小寫指定。

在 Unicode 資料庫中,字串資料類型的預設字串單位是由 NLS_STRING_UNITS 廣域變數或 string_units 資料庫配置參數的值決定。 在非 Unicode 資料庫中,字串資料類型的預設字串單位是 OCTETS。

OCTETS
指定長度屬性的單位是位元組。
CODEUNITS32
指定長度屬性的單位是 Unicode UTF-32 代碼單位,以字元數為單位計算近似值。 這不會影響資料類型的基礎字碼頁。 資料值的實際長度是透過計算 UTF-32 字碼單位來決定,就像資料已轉換為 UTF-32 一樣。 CODEUNITS32 只能在 Unicode 資料庫中指定 (SQLSTATE 560AA)。
GRAPHIC(integer [CODEUNITS16 | CODEUNITS32])
指定長度的固定長度圖形字串,範圍為 1 - 127 個雙位元組、1 - 127 CODEUNITS16 或 1 - 63 CODEUNITS32。 預設長度為 1。
VARGRAPHIC(integer [CODEUNITS16 | CODEUNITS32])
指定長度上限的可變長度圖形字串,範圍為 1 - 16336 個雙位元組、1 - 16336 CODEUNITS16 或 1 - 8168 CODEUNITS32。
DBCLOB (integer [K] [CODEUNITS16 | CODEUNITS32])
指定長度上限的字元大型物件字串,以雙位元組、Unicode UTF-16 字碼單位或 Unicode UTF-32 字碼單位為單位。 預設長度上限為 32,767 個雙位元組。
如果您要將長度整數乘以 1024 ,請指定 K (kilo) 乘數。
  • 無論您是否使用 K 乘數,產生的長度都受到外部表格中 DBCLOB 直欄的最大長度限制,即 32,767 CODEUNITS16 或 16,383 CODEUNITS32。 請注意,32K CODEUNITS16 和 16K CODEUNITS32 每一個都超出長度上限 1,因此不容許使用。
  • 在資料類型與長度規格之間或在長度整數與 K 乘數之間容許任何空格數 (包括零空格)。 例如,下列規格都相等且有效:
    DBCLOB(50K)
    DBCLOB(50 K)
    DBCLOB (50   K)
  • K 乘數可以大寫或小寫指定。

在 Unicode 資料庫中,字串資料類型的預設字串單位是由 NLS_STRING_UNITS 廣域變數或 string_units 資料庫配置參數的值決定。 在非 Unicode 資料庫中,字串資料類型的預設字串單位為 CODEUNITS16。

CODEUNITS16
指定長度屬性的單位是 Unicode UTF-16 代碼單位,與以雙位元組為單位的計數相同。 CODEUNITS16 只能在 Unicode 資料庫中指定 (SQLSTATE 560AA)。
CODEUNITS32
指定長度屬性的單位是 Unicode UTF-32 字碼單位。 這不會影響資料類型的基礎字碼頁。 資料值的實際長度是透過計算 UTF-32 字碼單位來決定,就像資料已轉換為 UTF-32 一樣。 CODEUNITS32 只能在 Unicode 資料庫中指定 (SQLSTATE 560AA)。
[NATIONAL CHARACTER | NATIONAL CHAR | NCHAR](integer)
指定長度的固定長度字串。 預設長度為 1。

NATIONAL CHARACTER 類型對映至固定長度字元或固定長度圖形字串,取決於也定義字串單位的 nchar_mapping 資料庫配置參數值。

[NATIONAL CHARACTER VARYING | NATIONAL CHAR VARYING | NCHAR VARYING | NVARCHAR](integer)
指定最大長度的可變長度字串。

NATIONAL CHARACTER VARYING 類型會對映至可變長度字元或可變長度圖形字串,取決於也定義字串單位的 nchar_mapping 資料庫配置參數值。

[NATIONAL CHARACTER LARGE OBJECT | NCHAR LARGE OBJECT | NCLOB] (整數 [K])
指定長度上限的大型物件字串。 預設長度上限為 16,383 個雙位元組。

此資料類型對映至字元大型物件 (CLOB) 或雙位元組字元大型物件 (DBCLOB),取決於也定義字串單位的 nchar_mapping 資料庫配置參數的現行值。 如需長度整數的可能值以及如何使用 K (kilo) 乘數的相關資訊,請參閱 CLOB 或 DBCLOB 參數的說明 (看何者適用)。

BINARY(整數
指定長度的固定長度二進位字串,必須在 1 - 255 個位元組範圍內。 預設長度為 1。
[VARBINARY | BINARY VARYING](integer)
指定長度上限的可變長度二進位字串,必須在 1 - 32672 位元組範圍內。
[BLOB | 二進位大型物件] (integer [K])
二進位大型物件字串,其最大長度為指定的字碼單位數目。 預設長度上限為 65,535 個位元組。
如果您要將長度整數乘以 1024 ,請指定 K (kilo) 乘數。
  • 不論您是否使用 K 乘數,結果長度都會受到外部表格中 BLOB 直欄的長度上限 (即 65,535 個位元組) 限制。 請注意,64K 超出長度上限 1,因此不容許使用。
  • 在資料類型與長度規格之間或在長度整數與 K 乘數之間容許任何空格數 (包括零空格)。 例如,下列規格都相等且有效:
    BLOB(50K)
    BLOB(50 K)
    BLOB (50   K)
  • K 乘數可以大寫或小寫指定。
日期
一個日期。
TIME
一次。
TIMESTAMP(integer) 或 TIMESTAMP
時間戳記。 此整數指定小數位數的秒數,從 0(秒)到 12(皮秒)。 預設值為 6(微秒)。
BOOLEAN
一個布林值。
LIKE table-name1view-namenickname
指定表格的直欄與指定表格 (table-name1)、視圖 (view-name) 或暱稱 (nickname) 的直欄具有相同的名稱及說明。 指定的表格、視圖或暱稱必須存在於型錄中,或者必須是宣告的暫存表格。 無法指定類型化表格或類型化視圖 (SQLSTATE 428EC)。
LIKE 的使用是 n 直欄的隱含定義,其中 n 是所識別表格(包括隱含地隱藏的直欄)、視圖或暱稱中的直欄數目。 新表格中對應於現有表格中隱含地隱藏直欄的直欄也會定義為隱含地隱藏。 隱含定義取決於 LIKE 之後指定的內容:
  • 如果指定表格,則隱含定義包括該表格的每一個直欄的直欄名稱、資料類型、隱藏屬性及可空值性性質。 如果未指定 EXCLUDING COLUMN DEFAULTS,則也會包含直欄預設值。
  • 如果指定視圖,則隱含定義包括該視圖中所定義全選的每一個結果直欄的直欄名稱、資料類型及可空值性性質。 視圖直欄的資料類型必須是適用於表格直欄的資料類型。
  • 如果指定暱稱,則隱含定義包括該暱稱的每一個直欄的直欄名稱、資料類型及可空值性性質。
  • 如果指定受保護表格,則新表格會繼承與識別表格相同的安全原則及受保護直欄。
  • 如果指定表格,且該表格包含 row-begin 直欄、row-end 直欄或 transaction-start-ID 直欄,則新表格的對應直欄只會繼承來源直欄的資料類型。 新直欄不會被視為已產生的直欄。
  • 如果指定包含句點的表格,則新表格不會繼承句點定義。
  • 如果指定系統期間時間表格,則新表格不是系統期間時間表格。
  • 如果指定使用依世代隨機方法的隨機配送表,且正在建立的新表格未共用相同的表格配送,則不會包括用來產生隨機配送值的 RANDOM_DISTRIBUTION_KEY 直欄。

根據 copy-attributes 子句,可以包括或排除直欄預設屬性。 隱含定義不包含指定表格、視圖或暱稱的任何其他屬性。 因此,新表格沒有任何主要索引鍵、唯一限制項、外部索引鍵限制項、參照完整性限制、觸發程式、索引、ORGANIZE BY 規格或 PARTITIONING KEY 規格。

在 LIKE 子句中識別表格且該表格包含 ROW CHANGE TIMESTAMP 直欄時,新表格的對應直欄只會繼承 ROW CHANGE TIMESTAMP 直欄的資料類型。 新直欄不會被視為已產生的直欄。

如果指定表格,且已啟動該表格的列或直欄層次存取控制,則新表格不會繼承該表格。

選項
下列選項控制將資料載入外部表格檔案或從外部表格檔案擷取資料。 每一個選項的值都是字串,不區分大小寫。
BINARYNUMERICICS
指定以二進位格式而非 ASCII 字元表示法輸入數值資料。 不影響其他非數值資料。 僅支援文字格式的固定長度格式資料。
TRUE 或 ON

數值資料 (DECIMAL 類型除外) 必須以二進位格式輸入。

支援的數值類型為 SMALLINT、INT、BIGINT、REAL 和 DOUBLE。 不會在資料類型之間進行轉換,但在整數類型 (SMALLINT、INT 及 BIGINT) 之間進行的轉換除外。

資料長度必須符合其目標直欄定義 (整數轉換除外; 例如 2、4 及 8 位元組都是 BIGINT 直欄的有效區域長度)。

不論載入作業執行所在的平台為何,都會假設資料檔中的所有數值輸入都是大序排列法。

REAL 和 DOUBLE 值必須是 IEEE 浮點數格式。

FALSE 或 OFF
數字資料必須以標準 ASCII 字元表示法輸入。
BOOLSTYLE 或 BOOLEAN_STYLE
在載入作業期間,所有布林值必須使用相同的樣式。 此選項指定要使用的布林樣式:
  • 1_0(這是預設值)
  • T_F
  • Y_N
  • YES_NO
  • TRUE_FALSE
基數
非零正整數值可置換預期傳回列數的估計。
CCSID
輸入資料檔的編碼字集 ID (CCSID)。 此值可以是 CCSID 規格中的任何有效整數值。 沒有預設值。 當 ENCODING 選項的值為 UTF8、 LATIN9或 INTERNAL 時, CCSID 與 ENCODING 選項互斥。
日期和時間使用的樣式取決於是否指定 CCSID:
  • 如果指定 CCSID,且未指定 DATESTYLE、TIMESTYLE、DATEDELIM 或 TIMEDELIM,則會使用 DATE_FORMAT、TIME_FORMAT 及 TIMESTAMP_FORMAT 的值或預設值。
  • 如果未指定 CCSID,且未指定 TIMESTAMP_FORMAT、DATE_FORMAT 或 TIME_FORMAT,則會使用 DATESTYLE、TIMESTYLE、DATEDELIM 及 TIMEDELIM 的值或預設值。
COMPRESS
對於載入作業或卸載作業,是否壓縮資料檔案資料:
GZIP
使用 GZIP 壓縮演算法來壓縮資料檔案資料。
NO
不會壓縮資料檔資料。 這是預設值。
LZ4
資料檔案資料是使用 LZ4 壓縮演算法進行壓縮。
如果 REMOTESOURCE 選項的值是 GZIP 或 LZ4,則無法指定 COMPRESS 選項。
CRINSTRING
如何解譯未跳出的回車 (CR) 或回車換行 (CRLF) 字元:
TRUE 或 ON
未跳出的 CR 字元會解譯為資料,而不是記錄定界字元。
FALSE 或 OFF
未跳出的 CR 會解譯為記錄定界字元。 這是預設值。
僅當 CtrlChars 選項的值設為 OFF 時,才對 CRINSTRING 使用固定長度格式。
CTRLCHARS
CHAR 或 VARCHAR 欄位中是否容許 ASCII 值 1 - 31。 任何空值、CR 或 LF 字元都必須跳出。 接受的值為:
TRUE 或 ON
CHAR 或 VARCHAR 欄位中容許 ASCII 值 1 - 31。
如果啟用固定長度格式,則容許所有未跳出的字元。
FALSE 或 OFF
CHAR 或 VARCHAR 欄位中不容許 ASCII 值 1 - 31。 這是預設值。
如果啟用固定長度格式,則未跳出的字元會導致錯誤。
固定長度格式的異常狀況:
  • \t、\n
  • \r 如果 CRinString 選項設為 ON
DATAOBJECT 或 FILE_NAME
將包含要建立的外部表格之檔案(或可視為檔案的任何媒體)的完整名稱。 當未緊接在表格名稱之後指定檔案名稱時,此選項是必要的; 否則,不容許此選項。

當 REMOTESOURCE 選項設為 LOCAL(這是其預設值)且 extbl_strict_io 配置參數設為 NO 時,外部表格檔案的路徑是絕對路徑,必須是 extbl_location 配置參數指定的其中一個路徑。 否則,外部表格檔案的路徑相對於 extbl_location 配置參數所指定的路徑,後面接著表格定義者的授權 ID。 例如,如果 extbl_location 設為 /home/xyz,且表格定義者的授權 ID 為 user1,則外部表格檔案的路徑相對於 /home/xyz/user1/

檔名必須是有效的 UTF-8 字串。
對於載入作業,下列條件適用:
  • 該檔案必須已存在。
  • 需要的許可權:
    • 如果外部表格是具名外部表格,則擁有者必須具有檔案的讀取權及 LOGDIR 目錄的寫入權。
    • 如果外部表格是暫時性外部表格,則陳述式授權 ID 必須具有檔案的讀取權及 LOGDIR 目錄的寫入權。
對於卸載作業,下列條件適用:
  • 如果檔案存在,則會改寫該檔案。
  • 需要的許可權:
    • 如果外部表格是具名外部表格,則擁有者必須對此檔案的目錄具有讀取及寫入權。
    • 如果外部表格是暫時性表格,則陳述式授權 ID 必須對此檔案的目錄具有讀寫權。
DATEDELIM
根據 DATESTYLE 選項指定的格式,區隔日期元件的定界字元。 如果您指定空字串,則日期元件之間沒有定界字元,且日和月必須指定為兩位數數字。 當 DATESTYLE 設為 MONDY 或 MONDY2 時,預設 DATEDELIM 值是空格。 TIMESTAMP_FORMAT 與 DATEDELIM 選項互斥。
DATESTYLE
如何解譯日期格式。 對於範圍 1 - 9 中的日或月,請使用 1 位數、2 位數或使用空格,後面接著單一位數。 當 DATEDELIM 選項是空格時,您可以在日之後指定逗點。 如果您執行下列動作,則會發生錯誤:
  • 若為日、月或年,請指定零
  • 指定不存在的日期(例如,8 月 32 日或 2 月 30 日)
DATESTYLE 選項與 DATE_FORMAT 或 TIMESTAMP_FORMAT 選項互斥。
表 1. DateStyle 選項的可能值。 此範例顯示 DATEDELIM 設為 '-' 時如何表示 2014 年 3 月 21 日。
說明 範例
YMD 4 位數字的年份,2 位數字的月份,2 位數字的日期。 這是預設值。 2014-03-21
DMY 2 位數字的日期,2 位數字的月份,4 位數字的年份。 21-03-2014
MDY 2 位數字的月份,2 位數字的日期,4 位數字的年份。 03-21-2014
MONDY 3 個字元的月份,2 位數字的日期,4 位數字的年份。 Mar 21 2014
DMONY 2 位數字的日期,3 個字元的月份,4 位數字的年份。 21-Mar-2014
Y2MD 2 位數字的年份,2 位數字的月份,2 位數字的日期。 不支援卸載。 14-03-21
DMY2 2 位數字的日期,2 位數字的月份,2 位數字的年份。 不支援卸載。 21-03-14
MDY2 2 位數字的月份,2 位數字的日期,2 位數字的年份。 不支援卸載。 03-21-14
MONDY2 3 個字元的月份,2 位數字的日期,2 位數字的年份。 不支援卸載。 Mar 21 14
DMONY2 2 位數字的日期,3 個字元的月份,2 位數字的年份。 不支援卸載。 21-Mar-14
DATETIMEDELIM
單位元組字元,用來區隔時間戳記資料類型的日期元件及時間元件。
預設定界字元是空格 (' ')。
在日期元件與時間元件之間,不需要定界字元。 例如,下列兩個值都有效:
2010-10-10 10:10:10
2010-10-1010:10:10
DATE_FORMAT
資料檔中的日期欄位格式。 此值可以是 TIMESTAMP_FORMAT 純量函數接受的任何日期格式字串。 預設值為 YYYY-MM-DD。 DATE_FORMAT 選項與 DATEDELIM 或 DATESTYLE 選項互斥。
DECIMALDELIM 或 DECIMAL_CHARACTER
資料類型 FLOAT、DOUBLE、TIME 及 TIMESTAMP 的十進位定界字元。 容許的值為 ',''.'
DECPLUSBLANK
指定在卸載作業期間表示正十進位值的方式。
您可以針對此選項指定下列其中一個值:
NONE
這是預設值。
此值代表不含符號的正十進位值。
PLUS
指定以 '+' 符號表示正十進位值。
空白
指定以空白符號而非 '+' 符號來表示正十進位值。
如果您對載入作業指定 DECPLUSBLANK 選項,則不會影響輸出。
具有 ddl(十進位 (6,2))及 DECPLUSBLANK 選項所有可用值的表格測試範例:
1234
-4563
  • 使用 (DECPLUSBLANK NONE) 作為測試中的 select * 來建立外部表格 '/tmp/unload.txt':
    unload.txt
    1234.00
    -4563.00
  • 使用 (DECPLUSBLANK PLUS) 作為測試中的 select * 來建立外部表格 '/tmp/unload.txt':
    unload.txt
    +1234.00
    -4563.00
  • 使用 (DECPLUSBLANK BLANK) 作為測試中的 select * 建立外部表格 '/tmp/unload.txt':
    unload.txt
     1234.00
    -4563.00
DELIMITER 或 COLUMN_DELIMITER
用來定界輸入或輸出記錄的欄位的字元。 預設值為垂直線 ('|')。
您可以使用下列任何方式來指定 7 位元 ASCII 範圍(十進位 1 - 127)中的字元:
  • 作為單一字元(例如 DELIMITER ';'
  • 透過指定其對應的 ASCII 十進位值(例如, DELIMITER 59DELIMITER '59'
  • 透過指定其對應的 ASCII 十六進位值(例如,DELIMITER x'3B'

只有透過指定其對應的 ASCII 十進位值或十六進位值,ISO 字集輸入檔才支援十進位範圍 128 - 255。 如果輸入檔是在 UTF8 字集中,則不支援此定界字元值範圍。

ENCODING
檔案中的資料類型:
UTF8
檔案使用 UTF8 encoding 針對所有字元資料
LATIN9
檔案使用 LATIN9 encoding 針對所有字元資料
INTERNAL
檔案同時使用 UTF8 和 LATIN9 編碼,或者您不確定使用哪種編碼類型。 系統會檢查資料並根據需要對資料進行編碼。 由於這項資料檢查可能降低整體效能,因此僅在必要時使用此值。 這是預設值。
INTERNAL
這是預設選項。
檔案同時使用 UTF8 和 LATIN9 編碼。
檔案以 Netezza 內部格式編碼,因此應該僅用於使用 ENCODING (INTERNAL) 從 Netezza 擷取的檔案。
當目標直欄為 CODEUINTS32 (NCHAR/VARCHAR) 時,輸入資料會驗證為有效的 UTF-8 字元。
只有 Unicode 資料庫才支援此選項。
DBCS_GRAPHIC
此值僅適用於載入作業,不適用於卸載作業。 如果指定此值,則也必須指定 CCSID 選項。 在載入作業期間,類型 GRAPHIC 或 VARGRAPHIC 的欄位會使用指定 CCSID 的雙位元組字集進行編碼;所有其他類型的欄位則會使用指定 CCSID 的混合位元組字集進行編碼。
附註: 對於 EXPORT 公用程式所建立的 DEL 檔案, ENCODING 無法設為 DBCS_GRAPHIC ,因為這類 DEL 檔案是使用單一字集編碼。
當 ENCODING 選項的值為 UTF8、 LATIN9或 INTERNAL 時, CCSID 與 ENCODING 選項互斥。
ESCAPECHAR 或 ESCAPE_CHARACTER
將哪個字元視為跳出字元。 跳出字元指出後面的字元會被視為欄位值的一部分(否則會被視為欄位定界字元或列尾順序字元)。 圖形字串資料會忽略跳出字元。 沒有預設值。
FILLRECORD
對於載入作業,記錄的欄位會從左至右載入至目標表格的直欄。 此選項指定輸入記錄包含的欄位是否可以少於為目標表格定義的直欄:
TRUE 或 ON
如果遺漏值的所有直欄都可為空值,則輸入行可以包含較少的欄位。 遺漏值設為空值。 如果遺漏值的一或多個直欄不可為空值,則會拒絕記錄。
FALSE 或 OFF
會拒絕包含較少直欄的輸入行。 這是預設值。
FORMAT 或 FILE_FORMAT
原始檔的資料格式:
文字
要載入或卸載的資料採用文字定界格式。 這是預設值。
INTERNAL
資料採用 Netezza Platform Software (NPS) 使用的內部格式。 只有在將資料從檔案載入至資料庫時,此值才有效,而不是在將資料卸載至檔案時有效。 如果對 FORMAT 選項指定此值,則也必須指定下列選項,且只指定這些選項:
  • DATAOBJECT 或 FILE_NAME。
  • REMOTESOURCE、SWIFT 或 S3。 如果指定 REMOTESOURCE 選項,它必須具有值 LOCAL 或 YES。
    注意:Db2 11.5 Mod Pack 1 版或更新版本的僅限儲存器版本中,除了 SWIFT 和 S3之外, AZURE 還相容。
  • COMPRESS。 這必須設為 GZIP。
二進位
資料採用 Db2 所使用的內部格式。
FIXED
資料採用固定長度格式。
只有載入作業才支援固定長度格式。
固定長度格式的檔案使用序數位置(偏移)來識別欄位在記錄內的位置。
附註:
  • 固定長度格式不支援下列外部表格選項:
    • Delimiter
    • 正在編碼
    • EscapeChar
    • FillRecord
    • IgnoreZero
    • IncludeZeroSeconds
    • Lfinstring
    • QuotedValue
    • RequireQuotes
    • TimeExtraZeros
    • TruncString
  • 沒有欄位定界字元。
  • 即使最後一筆記錄也需要記錄結尾定界字元。
  • 通常,固定長度格式檔案中的資料沒有十進位定界字元或時間定界字元,因為定界字元不是必要且使用空格。
  • 定界字元的位置是固定的,並在佈置定義中指定,因為欄位的大小是固定的。 此定義隨附固定長度格式資料檔。
  • 若要將固定格式資料載入至資料庫,您必須定義記錄內欄位及位置的目標資料類型。
  • 您不需要載入固定長度格式檔案中的所有欄位。 您可以使用填充值規格來跳過它們。
  • 資料檔中的欄位順序必須符合目標表格中的順序。 或者,您必須建立外部表格定義,將欄位的順序指定為資料庫直欄。
  • 您可以搭配使用外部表格定義與 insert-select 陳述式來變更欄位順序。
  • 通常,不明值或空值由分類為代表空值的已知資料型樣表示。
當外部表格的 FORMAT 選項設為 FIXED 時,下列參數適用:
LAYOUT
強制項目。
佈置是區域或欄位定義的有序集合。 它定義輸入記錄的欄位位置。
在大括弧 { } 內指定以逗點區隔的區域定義。
每一個區域定義都由互斥、非重疊子句組成。
沒有預設值。
子句必須按下列順序,即使其中部分子句是選用的且可以是空的也是如此:
USE TYPE
選用。
指出區域是一般資料區域、參照區域還是填充區域。
若為資料區域,則會省略此值。
參照區域指定為 REF。 此規格表示區域由另一個區域參照其區域長度或空值。
填充值區域指定為 FILLER。 填充值區域指定將位元組或字元視為資料檔中的填充值。
NAME
選用。
區域的名稱。
目前未使用此定義。 通常會提供它來識別欄位。
TYPE
選用。
定義區域的類型。
如果您未指定類型,它會取得表格直欄對應類型的預設值。
有效值如下:
  • CHAR
  • VARCHAR
  • NCHAR
  • NVARCHAR
  • SMALLINT
  • BIGINT
  • 二進位
  • VARBINARY
  • GRAPHIC
  • VARGRAPHIC
  • FLOAT
  • DOUBLE
  • DEC、NUM 或 NUMERIC
  • DECFLOAT
  • BOOLEAN
  • 日期
  • TIME
  • TIMESTAMP
STYLE
選用。
定義區域表示法。
預設表示法基於區域類型和格式選項。
所有其他樣式僅適用於其對應的非文字區域類型。
有效值如下:
  • INTERNAL

    僅適用於文字區域,即 char、varchar、nchar 及 nvarchar。

  • DECIMAL

    適用於整數和數值區域類型。

  • DECIMALDELIM <'decimal-delim'>

    適用於數值、浮點數、倍精準數及時間樣式(時間及時間戳記)區域類型。

  • FLOATING

    適用於浮點或倍精準數區域類型。

  • EXPONENTIAL

    適用於浮點或倍精準數區域類型。

  • YMD <'date-delim'>

    適用於日期區域,包括 DateStyle 和 DateDelim 外部表格選項支援的其他日期樣式。

  • 12Hour <'time-delim'>

    適用於時區,包括 TimeStyle 和 TimeDelim 外部表格選項支援的其他時間樣式。

  • 24Hour <'time-delim'>

    適用於時區,包括 TimeStyle 和 TimeDelim 外部表格選項支援的其他時間樣式。

  • YMD <'date-delim'> 24Hour <'time-delim'>

    適用於時間戳記區域,包括 DateStyle、DateDelim、TimeStyle 及 TimeDelim 外部表格選項支援的日期和時間樣式的其他組合。

  • TRUE_FALSE、Y_N、1_0

    適用於布林區域,包括 BoolStyle 外部表格選項支援的其他布林樣式。 樣式必須符合格式。

LENGTH
選用。
指定為位元組或字元,後面接著參照區域的數字或內部參照。
參照區域所提供或參照的位元組數或字元數。
對於參照區域或充填區域,您無法使用內部參照。 對於參照區域,位元組數指定如何從資料檔讀取資料以取得參照值。
您可以使用加號及減號,如下所示:
BYTES @2 + 10
BYTES @2 - 10
NULLIF
選用。
定義區域 NULLASE 屬性。
指定欄位內的已知資料型樣,當它存在時,表示欄位是空值。
長度等於或小於欄寬。 長度上限為 39 個位元組。
如果在表格內的任何區域上使用 NULLIF 子句,則不支援 NULLVALUE 選項。
您可以使用下列類型的參照:
@
數值區域的內部參照。
數值完全相符。
&
外部參照。
完全符合指定值。
&&
隔離參照。
使用完全相符的字串來跳過前導空格和尾端空格。
空值在下列範例中有詳細說明:
表 2. 佈置範例
使用類型 名稱 類型 樣式 長度 Nullif
NA f1 int4 DECIMAL 位元組 10 Nullif & = 0
NA f2 日期 YMD 位元組 10 Nullif &= '2000-10-10'
NA f3 char(20) INTERNAL 字元 10 Nullif &&='ab'
充填 f4 char(10) NA 位元組 10 NA
請記住:
  • 長度子句中所參照的區域必須是整數類型。
  • 您不得針對參照區域或填充值區域指定 NULLIF 選項。
  • 參照區域和填充值區域不能有可變長度。
  • 可變長度區域無法自行參照。
  • 將長度子句中的參照區域定義為 REF。
  • 長度子句參照只能使用 INTERNAL (@) 參照。 不支援外部或隔離的參照。
  • 在長度子句所參照的區域與區域本身之間,不容許存在參照區域。
  • 如果參照類型為 INTERNAL (@),則 NULLIF 子句無法參照本身。
  • 如果直欄不可為空值,則它可能沒有 NULLIF 子句。
  • 只有區域的字串類型才容許可變長度。
  • NULLIF 子句只能參照 REF 區域或區域本身。
  • 在 NULLIF 子句所參照的區域與區域本身之間,不容許存在其他參照區域,但長度子句中所參照的區域除外。
  • 記錄長度只能指向區域 1 以供參照。
  • REF 必須具有參照它的區域。
  • 只有在 REF 區域是非整數時,NULLIF 子句才能具有外部參照。
Recordlength
指定整個記錄的長度,其中包括空值指示器位元組(如果存在的話),並排除記錄定界字元(如果存在的話)。
該值是常數整數。
該值也可以是佈置定義中參照區域的內部參照。
沒有預設值。
您可以使用加號及減號作為內部參照,如下所示:
RECORDLENGTH @1 + 10
RECORDLENGTH @1 - 10
IGNOREZERO 或 TRIM_NULLS
指定是否要捨棄 CHAR 欄位及 VARCHAR 欄位中的二進位值零。
TRUE 或 ON
會忽略位元組值零。
FALSE 或 OFF
不忽略位元組值零。 這是預設值。
KEEP
接受二進位值零並容許作為輸入欄位的一部分。
INCLUDEHEADER 或 COLUMN_NAMES
對於卸載作業,表格直欄名稱是否要併入為外部表格檔案中的標頭:
TRUE 或 ON
表格直欄名稱將併入作為標頭。
FALSE 或 OFF
表格直欄名稱不會併入作為標頭。 這是預設值。
INCLUDEZEROSECONDS
對於卸載作業,當沒有秒的值可用時,是否指定 00 作為秒的值:
TRUE 或 ON
指定 00 作為秒的值。
FALSE 或 OFF
請勿指定秒的值。 這是預設值。
INCLUDEHIDDEN
對於載入作業,指定資料檔案中是否存在隱藏的直欄值。

當您使用 LIKE 或 SAMEAS 子句來建立外部表格,且基本表格具有隱藏的直欄時,INCLUDEHIDDEN 選項會運作。

資料檔包含隱藏直欄的值。
資料檔不包含隱藏直欄的值。 這是預設值。 您可以使用登錄變數 DB2_EXTBL_INCLUDE_HIDDEN_COLS 來變更預設值。
LFINSTRING
指定如何解譯字串資料內未跳出的換行(有時稱為 LF 或換行)字元:
TRUE 或 ON
只有在記錄的最後一個欄位中,才會將未跳出的 LF 字元解譯為記錄定界字元;否則會將它視為資料。 若要將記錄最後一個欄位中的 LF 字元視為資料,請以單引號或雙引號括住該欄位的值。
FALSE 或 OFF
不論未跳出的 LF 字元的位置為何,都會將其解譯為記錄定界字元。 這是預設值。

卸載作業不支援此選項。

注意: 此 SQL 相容性加強功能僅在 Db2 11.5 Mod Pack 2 以及更新版本中提供。
LOGDIR 或 ERROR_LOG
寫入下列檔案的目錄:
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.bad
包含拒絕記錄的檔案(亦即,無法處理的記錄)。
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.log
日誌檔。
預設值是外部表格檔案寫入其中的目錄。 如果針對 .bad 或 .log 檔案所建構的名稱長度超出容許的上限,則會截斷包含外部表格(由 <file-name> 指出)的檔案名稱,以便不會超出上限。

如果在分割區上執行作業時產生 .log 或 .bad 檔,則產生的檔案名稱會以句點作為字尾,後面接著 3 位數的分割區號碼。

MAXERRORS 或 MAX_ERRORS
對於載入作業,這是系統停止處理並立即回復載入的拒絕記錄數臨界值。 預設值為 1(亦即,單一拒絕記錄會導致回復)。
對於固定長度格式,適用下列條件:
  • 剖析器會報告每一個欄位或區域的錯誤,而不是每列報告一個錯誤。
  • 同一列可以報告多個錯誤。
  • 當剖析器偵測到欄位或區域中的錯誤時,它會使用欄位長度或區域長度回復。 然後,它會從下一個欄位或區域繼續,直到達到記錄結尾,或發生無法復原的錯誤,或達到 MaxErrors 限制。
  • 無法復原的錯誤包括下列錯誤:
    • RecordLength 不符。
    • 找不到 RecordDelimiter。
    • RecordLength 值無效,亦即,該值是負值或零。
    • 區域長度無效,亦即,值為負值。
    • UTF-8 起始位元組無效。
    • UTF-8 接續位元組無效。
MULTIPARTSIZEMB

DB2_ENABLE_COS_SDK 登錄變數設為 ON 時,會透過內嵌的供應商 COS SDK 來協助 Db2 遠端儲存體與雲端物件儲存體的通訊,該 SDK 容許 Db2 將物件/檔案串流至多個組件中的雲端物件儲存體(又稱為「多組件上傳」)。 此參數指定要卸載之檔案的多組件上傳的組件大小 (MB),並置換 MULTIPARTSIZEMB dbm config 參數中指定的值。 從 11.5 版 Mod Pack 7 開始,僅在 Linux (x86) 環境中提供此選項。

MAXROWS 或 MAX_ROWS
如果設為正整數,則會指定外部表格中要處理的記錄(列)數目上限。 如果設為 0(預設值),則沒有限制,且會處理所有列。 在載入作業期間,如果 MAXROWS 設為正值,則在處理該列數之後,不論是否拒絕或跳過部分列,系統都會結束載入作業並確定所有插入的記錄。
MERIDIANDELIM
以 12 小時定界及未定界的時間值格式來區隔秒元件與 AM 記號或 PM 記號的單位元組字元。
預設定界字元是空格 (' ')。
在秒元件與 AM 記號或 PM 記號之間,不需要定界字元。 例如,下列兩個值都有效:
1:02:46.12345 AM
1:02:46.12345AM
NOLOG
指定是否建立外部表格的 .log 檔案。
此選項不適用於 .bad 檔案。
可能的值為:
未建立任何 .log 檔案。
建立 .log 檔案。
這是預設值。
NULLVALUE 或 NULL_VALUE
最多 4 個位元組的 UTF-8 字串,用來表示空值。 預設值為 'NULL'
PARTITION
如果針對資料庫啟用「資料庫分割特性 (DPF)」,則可以將外部表格分割成數個檔案。 組成外部表格的每一個資料檔的名稱都以句點作為字尾,後面接著從 000 到 999 的 3 位數數字,指出分割區的號碼。 例如,如果名稱為 dataFile.txt 的外部表格分成三個分割區,則組成它的檔案會具有名稱 dataFile.txt.000dataFile.txt.001dataFile.txt.002。 這些檔案必須可從所有成員存取。
對於分割的外部表格,PARTITION 選項指定要套用陳述式的一或多個分割區:
PARTITION ALL
陳述式適用於組成外部表格的所有分割區。 對於卸載作業,這是唯一容許的值。
PARTITION (n TO n)
陳述式適用於指定範圍內的所有分割區,例如 PARTITION (54 TO 62)
PARTITION (n,n,…)
陳述式僅適用於指定的一或多個分割區,例如,PARTITION (53)PARTITION (51,57,58)。 如果指定多個分割區號碼,則必須以遞增順序指定(sqlcode SQL0263N 與 SQLSTATE=42615),且不能有重複(sqlcode SQL0265N 與 SQLSTATE=42615)。

如果在對分割的外部表格執行作業時產生 .log 或 .bad 檔案,則產生的檔案名稱會以句點作為字尾,後面接著 3 位數的分割區號碼。

如果啟用 DPF 且未指定 PARTITION 選項,則會將外部表格視為協調程式成員上的單一分割表格。 外部表格檔案的名稱以及 .log 和 .bad 檔案的字尾不是分割區號碼。

如果未啟用 DPF ,則可以指定 PARTITION 選項,但只能使用值 ALL、(0 到 0) 或 (0) (SQL0644N)。 它不會有任何作用。

REMOTESOURCE 與 PARTITION 選項互斥。

QUOTEDNULL
對於載入作業,如何解譯以單引號或雙引號括住且符合 NULLVALUE 或 NULL_VALUE 選項所指定空值的值(例如,"NULL" 或 'NULL'):
TRUE 或 ON
該值會解譯為空值。 這是預設值。
FALSE 或 OFF
該值會解譯為字串。
QUOTEDVALUE 或 STRING_DELIMITER
資料值是否以引號括住:
SINGLE 或 YES
資料值以單引號 (') 括住。
DOUBLE
資料值以雙引號 (") 括住。
NO
資料值不會以引號括住。 這是預設值。
RECORDDELIM 或 RECORD_DELIMITER
要解譯為列(記錄)定界字元的字串文字。 預設值為 '\n'

當 CRINSTRING 設為 TRUE 時,RECORDDELIMM 不能包含 CR ('\r') 字元 - 只有 CRLF ('\r \n') 定界字元例外,CRINSTRING 只適用於文字格式。

REMOTESOURCE
外部表格檔案所在的位置,如果它位於遠端系統上,則是否要壓縮檔案資料:
LOCAL
檔案位於本端伺服器上,即管理資料庫的系統。 這是預設值。
YES
檔案位於本端伺服器以外的系統上。 例如,如果用戶端系統連接至資料庫,且檔案位於該系統上,請指定 YES。 檔案資料在傳送之前不會壓縮。
GZIP
與 YES 類似,除了在傳送資料之前使用 GZIP 壓縮演算法壓縮檔案資料,並在收到資料之後解壓縮。 當傳送大量可壓縮的資料時,這樣做可以提升整體效能。
LZ4
與 YES 類似,除了在傳送資料之前使用 LZ4 壓縮演算法壓縮檔案資料,並在收到資料之後將其解壓縮。 當傳送大量可壓縮的資料時,這樣做可以提升整體效能。
REMOTESOURCE、SWIFT 和 S3 選項互斥。
注意:Db2 11.5 Mod Pack 1 版或更新版本的僅限儲存器版本中, AZURE 相容且其選項與 REMOTESOURCE、SWIFT 及 S3互斥。
REMOTESOURCE 與 PARTITION 選項互斥。 如果 REMOTESOURCE 選項的值是 GZIP 或 LZ4,則無法指定 COMPRESS 選項。
REQUIREQUOTES
引號是否為必要:
TRUE 或 ON
引號是必要的。 QUOTEDVALUE 選項必須設為 YES、SINGLE 或 DOUBLE。
FALSE 或 OFF
引號不是必要的。 這是預設值。
SKIPROWS 或 SKIP_ROWS
對於載入作業,這是要在開始載入資料之前跳過的列數。 預設值是 5。 因為跳過的列會在跳過之前先處理,所以跳過的列仍然能夠導致處理錯誤。
SOCKETBUFSIZE
從原始檔讀取的資料片段大小(以位元組為單位)。 有效值範圍為 64 KB - 800 MB。 如果您指定超出此範圍的值,則該值會設為最接近的有效值。 預設值是 8 MB。
STRICTNUMERIC
對於載入作業,當要插入 DECIMAL 欄位的值的小數位數超出針對該欄位定義的小數位數時,如何處理該值:
TRUE 或 ON
拒絕包含要插入值的列。 例如,如果下列任何值要載入 DECIMAL(5,3) 欄位中,則會拒絕包含該值的列:
12.666666666
-98.34496862785
0.00089
FALSE 或 OFF
接受包含要插入值的列,並截斷超出為欄位定義的小數位數的小數部分。 這是預設值。 例如,前一個範例中的值將轉換為:
12.666
-98.344
0.000
SWIFT
指定來源資料檔位於 Swift 物件儲存庫中。 REMOTESOURCE、SWIFT 和 S3 選項互斥。 使用 DATAOBJECT 選項來指定檔名。
注意:Db2 11.5 Mod Pack 1 版或更新版本的僅限儲存器版本中, AZURE 相容且其選項與 REMOTESOURCE、SWIFT 及 S3互斥。
語法:
SWIFT (endpoint, authKey1, authKey2, bucket)
其中:
端點
指定 SWIFT Web 服務 URL 的字串。
authKey1
指定用來驗證使用者之 Swift 開放式堆疊帳戶的存取 ID 或使用者名稱的字串。
authKey2
指定用來驗證使用者之 Swift 開放式堆疊帳戶的密碼的字串。
儲存區
檔案所在 Swift 開放式堆疊儲存器(儲存區)的名稱。
範例:
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   swift('https://dal05.objectstorage.softlayer.net/auth/v1.0/', 
    'XXXOS123456-2:xxx123456',
    'b207c6e974020737d92174esdf6d5be9382aa4c335945a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
S3
指定來源資料檔位於 S3 相容物件儲存庫中。 REMOTESOURCE、SWIFT 和 S3 選項互斥。 使用 DATAOBJECT 選項來指定檔名。
注意:Db2 11.5 Mod Pack 1 版或更新版本的僅限儲存器版本中, AZURE 相容且其選項與 REMOTESOURCE、SWIFT 及 S3互斥。
語法:
S3 (endpoint, authKey1, authKey2, bucket)
其中:
端點
指定 S3 相容 Web 服務 URL 的字串。
authKey1
字串,指定用來驗證使用者及所有使用者動作之存取金鑰的 S3 存取金鑰 ID。對於 IBM Cloud Object Storage,這是來自 HMAC 認證的存取金鑰 ID。
authKey2
字串,指定用來驗證使用者及所有使用者動作之存取金鑰的 S3 秘密金鑰。對於 IBM Cloud Object Storage,這是來自 HMAC 認證的秘密存取金鑰。
儲存區
檔案所在的 S3 儲存區名稱。
附註: 對於 IBM Cloud Object Storage,若要建立 HMAC 認證,在建立新的服務認證時,請在 新增線型配置參數 欄位中指定 {"HMAC:true}
使用 AWS S3 的範例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3.amazonaws.com', 
    'XXXOS123456-2:xxx123456',
    'bs07c6e974040737d92174e5e96d5be9382aa4c33xxx5a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
使用 IBM Cloud Object Storage 的範例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
AZURE
注意: 此特性在 Db2 11.5 版 Mod Pack 1 或更新版本的僅限儲存器版本中提供。
指定來源資料檔位於 Microsoft Azure Blob Storage 中。 REMOTESOURCE、SWIFT、S3 及 AZURE 選項互斥。 使用 DATAOBJECT 選項來指定檔名。 語法:
語法:
AZURE (endpoint, authKey1, authKey2, bucket)
其中:
端點
指定 AZURE Web 服務 URL 的字串。
authKey1
指定用來驗證使用者之 Azure Blob Storage 帳戶的存取 ID 或使用者名稱的字串。
authKey2
指定用來驗證使用者之 Azure Blob Storage 帳戶的存取金鑰的字串。
儲存區
檔案所在 Azure Blob Storage 儲存器(儲存區)的名稱。
範例:
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   azure('https://my_account.blob.core.windows.net', 
    'my_account',
    'lW+oHjmZecPS++IKgThAHlMUOaFUA5C6Z2RlFmc9JPpK34RO/ZIOywzILxJnzGPHz6d/yDrcQDAwH5wySbOZMQ==', 
    'my_bucket'
   )
  )
使用 IBM Cloud Object Storage 的範例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
TIMEDELIM
用來區隔時間元件的單位元組字元(小時、分鐘及秒)。 預設值為 ':'。 如果 TIMEDELIM 設為空字串,則小時、分鐘及秒必須全部指定為兩位數數字。 TIMESTAMP_FORMAT 與 TIMEDELIM 選項互斥。
TIMEROUNDNANOS 或 TIMEEXTRAZEROS
附註: 此選項僅適用於 TIMESTAMP 直欄。
指定是接受包含非零精準度超出六位小數位數之時間值(並四捨五入至最接近的微秒)的記錄,還是拒絕此記錄:
接受所有記錄。 其時間值會四捨五入至最接近的微秒。
只接受可以儲存而不失去精準度的那些記錄(例如,'08.15.32.123' 或 '08.15.32.12345600000',而非 '08.15.32.1234567')。 所有其他記錄都會被拒絕。 這是預設值。
TIMESTYLE
將在資料檔案中使用的時間格式:
24HOUR
24 小時格式,例如 23:55。 這是預設值。
12HOUR
12 小時格式,例如 11:55 PM。 AM 或 PM 記號前面可以有單一空格,且不區分大小寫。
TIMESTYLE 選項與 TIME_FORMAT 或 TIMESTAMP_FORMAT 選項互斥。
TIMESTAMP_FORMAT
資料檔中時間戳記欄位的格式。 此值可以是 TIMESTAMP_FORMAT 純量函數接受的任何格式字串。 預設值為 'YYYY-MM-DD HH.MI.SS'。 TIMESTAMP_FORMAT 選項與 TIMEDELIM、DATEDELIM、TIMESTYLE 或 DATESTYLE 選項互斥。
TIME_FORMAT
資料檔中的時間欄位格式。 此值可以是 TIMESTAMP_FORMAT 純量函數接受的任何時間格式字串。 預設值為 HH.MI.SS。 TIME_FORMAT 選項與 TIMEDELIM 或 TIMESTYLE 選項互斥。
TRIMBLANKS
外部表格如何處理字串中的前導或尾端空白(亦即,前導或尾端空格字元):
LEADING
移除所有前導空白(亦即,第一個非空白字元之前的空白)。
TRAILING
移除所有尾端空白(亦即,最後一個非空白字元之後的空白)。
兩者
移除所有前導及尾端空白。
NONE
不移除任何空白。 這是預設值。
從檔案讀取資料並將資料載入至外部表格時:
  • 如果 QUOTEDVALUE 或 STRING_DELIMITER 與值 SINGLE、YES 或 DOUBLE 一起指定,則不會移除引號內的前導和尾端空白。
  • 對於 CHAR 及 NCHAR 資料,值 TRALING 或 BOTH 不會對尾端空白有任何作用,因為字串會自動以尾端空白重新填補。
TRUNCSTRING 或 TRUNCATE_STRING
系統如何處理超出其宣告儲存體大小的 CHAR 或 VARCHAR 字串:
系統會截斷超出其宣告儲存體大小的字串值。
當字串值超出其宣告的儲存體大小時,系統會傳回錯誤。 這是預設值。
Y2BASE
100 年範圍的開始年份。 指定為 2 位數的年份會從今年開始計算。 預設值為 2000。 當 DATESTYLE 設為 Y2MD、MDY2、DMY2、MONDY2 或 DMONY2 時,必須指定此選項。
表 3. 選項
選項 預設值 套用至載入 套用至卸載
Azure
注意: 此選項僅適用於 Db2 11.5 版 Mod Pack 1 或更新版本的僅限儲存器版本。
(無預設值) Y Y
BOOLSTYLE 或 BOOLEAN_STYLE 1_0 Y Y
基數 (無預設值) Y Y
CCSID (無預設值) Y Y
COMPRESS NO Y Y
CRINSTRING Y Y
CTRLCHARS Y N
DATAOBJECT 或 FILE_NAME (無預設值) Y Y
DATEDELIM '-' Y Y
DATETIMEDELIM 空格 ('') Y Y
DATESTYLE YMD Y Y
DATE_FORMAT YYYY-MM-DD Y Y
DECIMALDELIM 或 DECIMAL_CHARACTER '.' Y Y
DELIMITER '|' Y Y
ENCODING INTERNAL Y Y1
ESCAPECHAR 或 ESCAPE_CHARACTER (無預設值) Y Y
FILLRECORD Y N
FORMAT 或 FILE_FORMAT 文字 Y Y
IGNOREZERO 或 TRIM_NULLS Y N
INCLUDEHEADER 或 COLUMN_NAMES N Y
INCLUDEZEROSECONDS Y Y
INCLUDEHIDDEN Y N
LFINSTRING Y N
LOGDIR 或 ERROR_LOG 外部表格檔案的目標目錄 Y N
MULTIPARTSIZEMB MULTIPARTSIZEMB dbm config 參數指定的值。 Y N
MAXERRORS 或 MAX_ERRORS 1 Y N
MAXROWS 或 MAX_ROWS 0 Y N
MERIDIANDELIM 空格 ('') Y Y
NOLOG Y Y
NULLVALUE 或 NULL_VALUE '空值' Y Y
PARTITION (無預設值) Y Y
QUOTEDNULL Y N
QUOTEDVALUE NO Y N
RECORDDELIM 或 RECORD_DELIMITER ' \n' Y N
REMOTESOURCE LOCAL Y Y
REQUIREQUOTES Y N
SKIPROWS 或 SKIP_ROWS 0 Y N
SOCKETBUFSIZE 8 MB Y Y
STRICTNUMERIC Y N
SWIFT (無預設值) Y Y
S3 (無預設值) Y Y
TIMEDELIM ':' Y Y
TIMEROUNDNANOS 或 TIMEEXTRAZEROS Y N
TIMESTAMP_FORMAT ' YYYY-MM-DD HH.MI.SS' Y Y
TIMESTYLE 24HOUR Y Y
TIME_FORMAT HH.MI.SS Y Y
TRIMBLANKS NONE Y Y
TRUNCSTRING 或 TRUNCATE_STRING Y N
Y2BASE 2000 Y N
1 僅適用於值 INTERNAL、UTF8 及 LATIN9。
AS SELECT 陳述式
指定針對全選衍生結果表格中的每一個直欄,定義對應直欄給表格,並移入查詢結果。 每一個定義的直欄都採用結果表格之對應直欄中的下列屬性(如果適用於資料類型):
  • 直欄名稱
  • 欄說明
  • 資料類型、長度、精準度及小數位數
  • 可空值性

注意事項

  • 無法處理的記錄(如果有的話)會以下列格式寫入檔案:
    <database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.bad
    錯誤會以下列格式的名稱記載在檔案中:
    <database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.log
    這些檔案位於 LOGDIR 或 ERROR_LOG 選項指定的目錄中。

    對於分割區上的作業,所產生 .bad 或 .log 檔案的名稱會以句點作為字尾,後面接著 3 位數的分割區號碼。

  • 若要建立、插入或捨棄具名外部表格,請發出 CREATE、INSERT 或 DROP 陳述式。 您無法插入或捨棄暫時性外部表格。
  • 捨棄外部表格會刪除表格定義,但不會刪除與表格相關聯的資料檔。

限制

  • 遠端外部表格限制:
    • 常式內不接受它
    • 不容許使用 LOAD CURSOR
    • 若為遠端外部表格 (亦即,外部表格不在 Swift 或 S3 物件儲存庫中,且 REMOTESOURCE 選項設為 LOCAL 以外的值):
      注意:Db2 11.5 Mod Pack 1 或更新版本的僅限儲存器版本中, AZURE 是相容的,具有相同的遠端外部表格限制。
      附註: 單一查詢或子查詢無法一次從多個外部表格中選取,且無法多次參照相同的外部表格。 必要的話,請將數個外部表格中的資料結合成單一表格,並在查詢中使用該表格。

      此外,聯集作業不能包含多個外部表格。

  • 外部表格只能由作業系統內定義的使用者 ID 來查詢。
  • 在 Windows 系統上執行的 Db2 實例無法使用外部表格。
  • 要載入的資料必須適當地格式化。
  • 您無法刪除、截斷或更新外部表格。

替代語法

下列替代方案是非標準的。 支援它們是為了與舊版產品或其他資料庫產品相容。
  • SAMEAS 可以用來取代 LIKE。
  • 對於 REMOTESOURCE 選項,可以指定值 ODBC、JDBC 或 OLE-DB 來取代 YES。
  • 如果 FORMAT 選項設為 INTERNAL,則可以針對 COMPRESS 選項指定值 YES 來取代 GZIP。

範例

  • 將資料卸載至外部表格:
    CREATE EXTERNAL TABLE 'order.tbl' USING (DELIMITER '|') AS SELECT * from orders;
    CREATE EXTERNAL TABLE 'export.csv' USING (DELIMITER ',') AS SELECT foo.x, bar.y, bar.dt FROM foo, bar WHERE foo.x = bar.x;
  • 從外部表格載入資料:
    INSERT INTO target SELECT * FROM EXTERNAL 'data.txt' USING (DELIMITER '|');
    INSERT INTO orders SELECT * FROM EXTERNAL 'order.tbl'( order_num INT, order_dt TIMESTAMP) USING (DELIMITER '|');
  • 從外部表格中選取資料:
    SELECT * FROM EXTERNAL 'order.tbl' (order_num INT, order_dt TIMESTAMP) USING (DELIMITER '|');
    SELECT * FROM EXTERNAL 'test.txt' LIKE test_table USING (DELIMITER ',');
    SELECT x, y AS dt FROM EXTERNAL 'test.txt' ( x integer, y decimal(18,4) ) USING (DELIMITER ',');