溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

DM7外部表怎么指定

發(fā)布時(shí)間:2021-12-21 17:22:22 來(lái)源:億速云 閱讀:121 作者:iii 欄目:數(shù)據(jù)庫(kù)

本篇內(nèi)容主要講解“DM7外部表怎么指定”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“DM7外部表怎么指定”吧!

DM7 外部表
需指定如下信息:
1. 表名、表所屬的模式名;
2. 列定義;
3. 控制文件路徑。
語(yǔ)法格式
CREATE EXTERNAL TABLE < 表名定義> < 表結(jié)構(gòu)定義>;
< 表名定義> ::=[< 模式名>.]< 表名>
< 表結(jié)構(gòu)定義> ::= (< 列定義> {,< 列定義>})
< 列定義> ::= < 列名> < 數(shù)據(jù)類型>
FROM子句 = FROM子句1 | FROM子句2 | FROM子句3| FROM子句4
FROM子句1 ::= FROM '< 控制文件路徑>'
FROM子句2 ::= FROM DATAFILE '< 數(shù)據(jù)文件路徑>' [< 數(shù)據(jù)文件參數(shù)列表>]
FROM子句3 ::= FROM < 控制文件目錄> < 控制文件選項(xiàng)>
FROM子句4 ::= FROM DATAFILE < 數(shù)據(jù)文件目錄> < 數(shù)據(jù)文件選項(xiàng)> [< 數(shù)據(jù)文件參數(shù)列表>]
< 數(shù)據(jù)文件參數(shù)列表> ::= PARMS(< 參數(shù)選項(xiàng)> {,< 參數(shù)選項(xiàng)>})
< 參數(shù)選項(xiàng)> ::= [FIELDS DELIMITED BY < 表達(dá)式>] | [RECORDS DELIMITED BY < 表達(dá)式>]|[ ERRORS ]|[BADFILE '< 數(shù)據(jù)文件路徑>']| |[LOG < 日志文件路徑>]|[NULL_STR ]|[SKIP < 跳過(guò)行數(shù)>]|[CHARACTER_CODE < 文件字符集>]
< 控制文件目錄> ::= DEFAULT DIRECTORY < 控制文件目錄名>
< 控制文件選項(xiàng)> ::= LOCATION ('< 控制文件名>')
< 數(shù)據(jù)文件目錄> ::= DEFAULT DIRECTORY < 數(shù)據(jù)文件目錄名>
< 數(shù)據(jù)文件選項(xiàng)> ::= LOCATION ('< 數(shù)據(jù)文件名>')

參數(shù)
1. < 模式名> 指明該表屬于哪個(gè)模式,缺省為當(dāng)前模式;
2. < 表名> 指明被創(chuàng)建的外部基表名;
3. < 列名> 指明基表中的列名;
4. < 數(shù)據(jù)類型> 指明列的數(shù)據(jù)類型,暫不支持多媒體類型;
5. < 控制文件路徑> 指明使用的控制文件的路徑的字符串;
6. < 數(shù)據(jù)文件路徑> 指明使用的數(shù)據(jù)文件路徑的字符串;
7. < 參數(shù)選項(xiàng)> FIELDS表示列分隔符;RECORDS表示行分隔符;ERRORS表示忽略外部表數(shù)據(jù)轉(zhuǎn)換中出現(xiàn)錯(cuò)誤的行數(shù),取值范圍為大于0的正整
數(shù),缺省為0,表示不忽略錯(cuò)誤。此處ERRORS 和控制文件中的ERRORS寫一個(gè)就行,如果都寫,以控制文件中的為主;LOG表示日志文件路徑,
默認(rèn)日志文件名為fldr.log;NULL_STR指定數(shù)據(jù)文件中NULL值的表示字符串,默認(rèn)忽略此參數(shù);SKIP指定跳過(guò)數(shù)據(jù)文件起始的邏輯行數(shù),默
認(rèn)為0;CHARACTER_CODE指定數(shù)據(jù)文件中數(shù)據(jù)的編碼格式,默認(rèn)為GBK,可選項(xiàng)有GBK,UTF-8,SINGLE_BYTE和EUC-KR;
8. < 表達(dá)式> 字符串或十六進(jìn)制串類型表達(dá)式,列分隔符只允許字符串類型;
9. < 控制文件目錄名> 指數(shù)據(jù)庫(kù)對(duì)象目錄的名稱。
圖例
DM7外部表怎么指定
DM7外部表怎么指定
DM7外部表怎么指定
DM7外部表怎么指定

語(yǔ)句功能
供DBA或具有CREATE_TABLE權(quán)限的用戶定義外部基表。MPP環(huán)境下不支持創(chuàng)建外部表。
使用說(shuō)明
1. < 表名>指定了所要建立的外部基表名。如果< 模式名>缺省,則缺省為當(dāng)前模式。表名需要是合法的標(biāo)識(shí)符。且滿足SQL語(yǔ)法要求;
2. 外部表的表名最大長(zhǎng)度為128個(gè)字符;
3. 所建外部基表至少要包含一個(gè)< 列名>指定的列,在一個(gè)外部基表中,各< 列名>不得相同。一張外部基表中至多可以包含2048列;
4. 外部基表不能存在大字段列;
5. 外部基表不能存在任何約束條件;
6. 外部基表不能為臨時(shí)表,不能建立分區(qū);
7. 外部基表上不能建立任何索引;
8. 外部基表是只讀的,不存在表鎖,不允許任何針對(duì)外部表的增刪改數(shù)據(jù)操作,不允許truncate外部表操作;
9. 控制文件路徑,以及數(shù)據(jù)文件路徑建議采用絕對(duì)路徑;
10. 控制文件的格式為:

[OPTIONS(
errors=
)]
LOAD [DATA]
INFILE [LIST] |
INTO TABLE tablename
FIELDS

其中:
OPTIONS選項(xiàng):可選部分,目前OPTIONS中僅支持errors選項(xiàng),用于指定忽略數(shù)據(jù)轉(zhuǎn)換出現(xiàn)錯(cuò)誤的行數(shù);此處errors 和< 參數(shù)選項(xiàng)>中的errors寫一個(gè)就行,如果都寫,以此處控制文件中的為主。
:指明使用的數(shù)據(jù)文件列表;
tablename:指明表名,創(chuàng)建外部表時(shí),表名可以與此不同;
:指明同一行中各個(gè)列的分隔符;
11. 數(shù)據(jù)文件中一行數(shù)據(jù)必須以回車結(jié)束;
12. 外部表支持查詢ROWID、USER和UID偽列,不支持查詢TRXID偽列。

舉例說(shuō)明
例1 指定操作系統(tǒng)的一個(gè)文本文件作為數(shù)據(jù)文件,編寫控制文件及建表語(yǔ)句。數(shù)據(jù)文件(/home/dmdba/data.txt),數(shù)據(jù)如下:

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.

系統(tǒng)執(zhí)行建表語(yǔ)句后,就在數(shù)據(jù)庫(kù)中建立了相應(yīng)的外部基表。查詢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 指定操作系統(tǒng)的一個(gè)文本文件作為數(shù)據(jù)文件(/home/dmdba/data1.txt),數(shù)據(jù)如下:

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.

查詢結(jié)果:

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.

到此,相信大家對(duì)“DM7外部表怎么指定”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

dm7
AI