您好,登錄后才能下訂單哦!
本篇內容主要講解“DM7外部表怎么指定”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“DM7外部表怎么指定”吧!
DM7 外部表
需指定如下信息:
1. 表名、表所屬的模式名;
2. 列定義;
3. 控制文件路徑。
語法格式
CREATE EXTERNAL TABLE < 表名定義> < 表結構定義>;
< 表名定義> ::=[< 模式名>.]< 表名>
< 表結構定義> ::= (< 列定義> {,< 列定義>})
< 列定義> ::= < 列名> < 數據類型>
FROM子句 = FROM子句1 | FROM子句2 | FROM子句3| FROM子句4
FROM子句1 ::= FROM '< 控制文件路徑>'
FROM子句2 ::= FROM DATAFILE '< 數據文件路徑>' [< 數據文件參數列表>]
FROM子句3 ::= FROM < 控制文件目錄> < 控制文件選項>
FROM子句4 ::= FROM DATAFILE < 數據文件目錄> < 數據文件選項> [< 數據文件參數列表>]
< 數據文件參數列表> ::= PARMS(< 參數選項> {,< 參數選項>})
< 參數選項> ::= [FIELDS DELIMITED BY < 表達式>] | [RECORDS DELIMITED BY < 表達式>]|[ ERRORS ]|[BADFILE '< 數據文件路徑>']| |[LOG < 日志文件路徑>]|[NULL_STR ]|[SKIP < 跳過行數>]|[CHARACTER_CODE < 文件字符集>]
< 控制文件目錄> ::= DEFAULT DIRECTORY < 控制文件目錄名>
< 控制文件選項> ::= LOCATION ('< 控制文件名>')
< 數據文件目錄> ::= DEFAULT DIRECTORY < 數據文件目錄名>
< 數據文件選項> ::= LOCATION ('< 數據文件名>')
參數
1. < 模式名> 指明該表屬于哪個模式,缺省為當前模式;
2. < 表名> 指明被創建的外部基表名;
3. < 列名> 指明基表中的列名;
4. < 數據類型> 指明列的數據類型,暫不支持多媒體類型;
5. < 控制文件路徑> 指明使用的控制文件的路徑的字符串;
6. < 數據文件路徑> 指明使用的數據文件路徑的字符串;
7. < 參數選項> FIELDS表示列分隔符;RECORDS表示行分隔符;ERRORS表示忽略外部表數據轉換中出現錯誤的行數,取值范圍為大于0的正整
數,缺省為0,表示不忽略錯誤。此處ERRORS 和控制文件中的ERRORS寫一個就行,如果都寫,以控制文件中的為主;LOG表示日志文件路徑,
默認日志文件名為fldr.log;NULL_STR指定數據文件中NULL值的表示字符串,默認忽略此參數;SKIP指定跳過數據文件起始的邏輯行數,默
認為0;CHARACTER_CODE指定數據文件中數據的編碼格式,默認為GBK,可選項有GBK,UTF-8,SINGLE_BYTE和EUC-KR;
8. < 表達式> 字符串或十六進制串類型表達式,列分隔符只允許字符串類型;
9. < 控制文件目錄名> 指數據庫對象目錄的名稱。
圖例
語句功能
供DBA或具有CREATE_TABLE權限的用戶定義外部基表。MPP環境下不支持創建外部表。
使用說明
1. < 表名>指定了所要建立的外部基表名。如果< 模式名>缺省,則缺省為當前模式。表名需要是合法的標識符。且滿足SQL語法要求;
2. 外部表的表名最大長度為128個字符;
3. 所建外部基表至少要包含一個< 列名>指定的列,在一個外部基表中,各< 列名>不得相同。一張外部基表中至多可以包含2048列;
4. 外部基表不能存在大字段列;
5. 外部基表不能存在任何約束條件;
6. 外部基表不能為臨時表,不能建立分區;
7. 外部基表上不能建立任何索引;
8. 外部基表是只讀的,不存在表鎖,不允許任何針對外部表的增刪改數據操作,不允許truncate外部表操作;
9. 控制文件路徑,以及數據文件路徑建議采用絕對路徑;
10. 控制文件的格式為:
[OPTIONS( errors= )] LOAD [DATA] INFILE [LIST] | INTO TABLE tablename FIELDS
其中:
OPTIONS選項:可選部分,目前OPTIONS中僅支持errors選項,用于指定忽略數據轉換出現錯誤的行數;此處errors 和< 參數選項>中的errors寫一個就行,如果都寫,以此處控制文件中的為主。
:指明使用的數據文件列表;
tablename:指明表名,創建外部表時,表名可以與此不同;
:指明同一行中各個列的分隔符;
11. 數據文件中一行數據必須以回車結束;
12. 外部表支持查詢ROWID、USER和UID偽列,不支持查詢TRXID偽列。
舉例說明
例1 指定操作系統的一個文本文件作為數據文件,編寫控制文件及建表語句。數據文件(/home/dmdba/data.txt),數據如下:
a|abc|varchar_data|12.34|12.34|12.34|12.34|0|1|1|1234|1234|1234|100|11|1234|1|1|14.2|12.1|12.1|1999-10-01|9:10:21|2002-12-12|15
控制文件(/home/dmdba/ctrl.txt)如下:
load data infile '/home/dmdba/data.txt' into table ext fields '|'
建表:
SQL> create external table ext ( 2 l_char char(1), 3 l_character character(3), 4 l_varchar varchar(20), 5 l_numeric numeric(6,2), 6 l_decimal decimal(6,2), 7 l_dec dec(6,2), 8 l_money decimal(19,4), 9 l_bit bit, 10 l_bool bit, 11 l_boolean bit, 12 l_integer integer, 13 l_int int, 14 l_bigint bigint, 15 l_tinyint tinyint, 16 l_byte byte, 17 l_smallint smallint, 18 l_binary binary, 19 l_varbinary varbinary, 20 l_float float, 21 l_double double, 22 l_real real, 23 l_date date, 24 l_time time, 25 l_timestamp timestamp, 26 l_interval interval year 27 )from '/home/dmdba/ctrl.txt'; executed successfully used time: 62.123(ms). Execute id is 312.
系統執行建表語句后,就在數據庫中建立了相應的外部基表。查詢ext表:
SQL> select * from ext; LINEID L_CHAR L_CHARACTER L_VARCHAR L_NUMERIC L_DECIMAL L_DEC L_MONEY L_BIT L_BOOL L_BOOLEAN L_INTEGER L_INT L_BIGINT L_TINYINT L_BYTE L_SMALLINT L_BINARY L_VARBINARY L_FLOAT L_DOUBLE L_REAL L_DATE L_TIME L_TIMESTAMP L_INTERVAL ---------- ------ ----------- ------------ --------- --------- ----- ------- ----- ------ --------- ----------- ----------- -------------------- ----------- ----------- ----------- -------- ----------- ------------------------- ------------------------- ------------------ ---------- --------------- --------------------------- --------------------- 1 a abc varchar_data 12.34 12.34 12.34 12.3400 0 1 1 1234 1234 1234 100 11 1234 0x01 0x01 1.420000000000000E+01 1.210000000000000E+01 1.2100000E+01 1999-10-01 09:10:21 2002-12-12 00:00:00.000000 INTERVAL '15' YEAR(2) used time: 7.248(ms). Execute id is 314.
例 2 指定操作系統的一個文本文件作為數據文件(/home/dmdba/data1.txt),數據如下:
10|9|7 4|3|2
建表:
SQL> create external table ext_2(c1 int,c2 int,c3 int) from datafile '/home/dmdba/data1.txt' parms(fields delimited by '|'); executed successfully used time: 11.008(ms). Execute id is 331.
查詢結果:
SQL> select * from ext_2; LINEID C1 C2 C3 ---------- ----------- ----------- ----------- 1 10 9 7 2 4 3 2 used time: 8.222(ms). Execute id is 332.
到此,相信大家對“DM7外部表怎么指定”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。