DM7外部表怎么指定

网友投稿 274 2023-12-05 16:57:23

DM7外部表怎么指定

本篇内容主要讲解“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 TABLEtablenameFIELDS

其中:

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 intfromdatafile /home/dmdba/data1.txtparms(fields delimited by |); executed successfully used time: 11.008(ms). Execute idis 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外部表怎么指定”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何使用RMAN对CDB中的PDB进行复制
下一篇:怎么从AIX将数据库迁移到Linux Oracle中
相关文章