本文主要讲解“如何指定DM7外部表”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何指定DM7外接表”!
DM7外部表
指定以下信息:
1.该表所属的表名和架构名;
2.列定义;
3.控制文件路径。
语法格式
创建外部表表名定义表结构定义;
表名定义:3360=[架构名。]表名
表定义:3360=(列定义{,列定义})
列定义:3360=列名数据类型
FROM子句=FROM子句1 | FROM子句2 | FROM子句3| FROM子句4
FROM子句1 :=FROM“控制文件路径”
FROM子句2 :=FROM DATAFILE“数据文件路径”[数据文件参数列表]
FROM子句3 :=FROM控制文件目录控制文件选项
FROM子句4 :=FROM DATAFILE数据文件目录数据文件选项[数据文件参数列表]
数据文件参数列表:=PARMS(参数选项{,参数选项})
参数:=[field DECLARED BY表达式]|[RECORDS DECLARED BY表达式]|[ERRORS]|[BADDFILE '数据文件路径']| |[日志文件路径]|[null _ str]|[跳过的行]| [Character _ code文件字符集]
控制文件目录:=DEFAULT DIRECTORY控制文件目录名
控制文件选项:=LOCATION(控制文件名)
数据文件目录:3360=默认目录数据文件目录名
数据文件选项:=LOCATION(数据文件名)
参数
1.模式名称表示表属于哪种模式,默认为当前模式;
2.表名表示创建的外部基表的名称;
3.列名是指明基表中的列名;
4.数据类型表示列的数据类型,暂时不支持多媒体类型;
5.控制文件路径是一个字符串,表示所使用的控制文件的路径;
6.数据文件路径指示所用数据文件路径的字符串;
7.参数选项FIELDS表示列分隔符;RECORDS表示行分隔符;ERRORS是指在外部表的数据转换中忽略有错误的行数,取值范围为大于0的正整数。
Number,默认值为0,这意味着不会忽略错误。这里,只需在控制文件中写入ERRORS和ERRORS之一。如果两个都写了,控制文件中的那个就是主文件。日志表示日志文件路径,
默认日志文件名是fldr.log;NULL_STR指定数据文件中NULL值的表示字符串;默认情况下,此参数被忽略;SKIP指定跳过数据文件开头的逻辑行数,无提示。
认为0;CHARACTER_CODE指定数据文件中数据的编码格式,默认为GBK,可选选项有GBK、UTF-8、SINGLE_BYTE、EUC-KR;
8.表达式字符串或十六进制字符串类型表达式,列分隔符只允许字符串类型;
9.控制文件目录名是指数据库对象目录的名称。
神话;传奇
语句函数
对于数据库管理员或具有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外部表怎么指定”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154584.html