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;

  1. < 表达式> 字符串或十六进制串类型表达式,列分隔符只允许字符串类型;
  2. < 控制文件目录名> 指数据库对象目录的名称。
    图例

语句功能
供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:指明表名,创建外部表时,表名可以与此不同;
:指明同一行中各个列的分隔符;

  1. 数据文件中一行数据必须以回车结束;
  2. 外部表支持查询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.

目录
相关文章
|
SQL 弹性计算 关系型数据库
转 PostgreSQL 认证考试(商业版本EDB enterpriseDB认证考试) 指南
标签 PostgreSQL , 认证 , edb 背景 转一篇华军写的认证指南。想考PG认证的小伙伴可以参考。 原文 https://yq.aliyun.com/articles/464038 1. 背景 因为工作的原因,需要考一个PostreSQL技术认证。经过一些准备,终于在今年的3月和5月参加并通过了EnterpriseDB的Associate和Professional认证
3584 0
转 PostgreSQL 认证考试(商业版本EDB enterpriseDB认证考试) 指南
|
5月前
|
机器学习/深度学习 人工智能 监控
CI/CD与模型监控平台集成MLOps系统实现的全面路径
MLOps是机器学习模型在生产环境中持续优化、部署和维护的关键。通过CI/CD流水线和模型监控平台的结合,可以大大提高模型开发和运维的效率,实现高效、稳定的模型服务。随着AI技术的快速发展,MLOps将在企业级AI应用中发挥越来越重要的作用。
CI/CD与模型监控平台集成MLOps系统实现的全面路径
|
4月前
|
Rust Ubuntu Java
官方支持长达12年!Ubuntu 24.04 LTS正式开放升级:Linux 6.8内核
对于开发者而言,Ubuntu 24.04 LTS在性能工程和机密计算方面迈出了重要一步,包含了Python 3.12、Ruby 3.2、PHP 8.3和Go 1.22等最新编程语言版本,重点优化了对.NET、Java和Rust等开发环境的支持。
|
4月前
|
Web App开发 Ubuntu Linux
Linux之Ubuntu操作系统安装
1、在Ubuntu系统下,可以使用自带的U盘启动制作软件制作启动盘。使用方法和rufus类似。 2、或者用dd命令制作启动盘,关于dd命令的使用方法可以百度查看。经过亲自实践,archlinux系统和红旗9.0系统的启动U盘就是用dd命令制作成功。
|
人工智能 安全 测试技术
MetaLlama大模型
LLaMA 是一组基础语言模型,参数范围从 7B 到 65B,在大量公开数据上训练而成,性能优异。Llama 2 为 LLaMA 的升级版,参数规模扩大至 70 亿至 700 亿,特别优化了对话功能。Code Llama 基于 Llama 2 开发,专注于代码生成,提供不同参数规模的模型。这些模型可在多种平台上运行,包括官方 API、第三方封装库如 llama.cpp 和 ollama,以及通过 Hugging Face 的 transformers 库使用。此外,还提供了详细的模型申请及使用指南,便于开发者快速上手。相关链接包括 Meta 官方页面和 GitHub 仓库。
MetaLlama大模型
|
存储 应用服务中间件 数据库
服务器,你真的了解吗?
服务器是在网络中为其他计算机提供服务的高性能计算机,具备高速CPU运算能力、长时间稳定运行及强大的I/O能力。其主要组件包括CPU、内存、硬盘等,并通过自带管理系统进行数据控制。按外形分为塔式、机架、刀片和高密服务器;按指令集分为CISC(如x86)和RISC(如Unix、ARM);按处理器数量分为单路、双路和多路服务器;按负载类型则有数据库、应用、接入、Web和文件服务器等多种分类。每种服务器针对不同应用场景设计,满足多样化的计算需求。
2212 2
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
555 2
|
域名解析 网络协议 Linux
Linux系统下DNS配置指南
Linux系统下DNS配置指南
2689 1
|
机器学习/深度学习
探索机器学习中的过拟合与欠拟合:原理与实践
在机器学习的领域中,过拟合和欠拟合是影响模型性能的两大关键问题。本文将深入解析这两个现象的原理,并通过具体案例探讨如何在实际项目中有效应对它们,从而提升模型的泛化能力和预测准确性。
699 27