【DM8】外部表

外部表是指不存在于数据库中的表。

通过向达梦数据库定义描述外部表的元数据,可以把一个操作系统文件当成一个只读 的数据库表,对外部表将像普通定义的表一样访问。

外部表的数据存储在操作系统文件中,建立外部表的时候,不会产生段,页簇等存储结构,只有与表相关的定义放在数据字典中。在数据库中不能对外部表的内容进行修改,不能对外部表建立主键,索引,外键。不需要将外部表的数据载入到数据库中来,通过SQL解码器来访问外部表。

外部表创建和访问主要步骤如下:

1.创建相关操作系统目录和外部文件;

2.在数据库中定义外部表目录;

3.根据需要定义控制文件(可选);

4.在数据库中创建外部表定义;

5.通过数据库访问外部表。

举例:

根据/opt/emp.txt文件,创建外部表TEST.EMP

bash 复制代码
[root@study ~]# cd /opt/
[root@study opt]# cat emp.txt 
1,a,2019-01-01
2,b,2018-08-08
3,c,1998-10-10
4,d,1988-11-11

1.不用控制文件

创建目录

bash 复制代码
SQL> create directory ddmpdir as '/opt';

图形化界面创建外部表

命令行方式:

bash 复制代码
SQL> create external table TEST.EMP(ID INT,NAME VARCHAR(10),SDATE DATE) from datafile default directory ddmpdir location('emp.txt')parms(fields delimited by ',');
操作已执行
已用时间: 5.204(毫秒). 执行号:5901.
SQL> select * from TEST.EMP;

行号     ID          NAME SDATE     
---------- ----------- ---- ----------
1          1           a    2019-01-01
2          2           b    2018-08-08
3          3           c    1998-10-10
4          4           d    1988-11-11

已用时间: 5.892(毫秒). 执行号:5902.

2.用控制文件

控制文件

bash 复制代码
[root@study opt]# cat emp.ctl 
LOAD DATA
INFILE 'emp.txt'
INTO TABLE TEST.EMP
FIELDS ','

创建目录

bash 复制代码
SQL> create directory empdir as '/opt';

图形化创建表

命令行方式创建表

bash 复制代码
SQL> create external table TEST.EMP(ID INT,NAME VARCHAR(10),SDATE DATE) from default directory empdir location('emp.ctl');
操作已执行
已用时间: 3.684(毫秒). 执行号:5602.

插入成功

bash 复制代码
SQL> select * from TEST.EMP;

行号     ID          NAME SDATE     
---------- ----------- ---- ----------
1          1           a    2019-01-01
2          2           b    2018-08-08
3          3           c    1998-10-10
4          4           d    1988-11-11

已用时间: 18.343(毫秒). 执行号:5603

注意检查:

1.建表的时候注意varchar的值

2.目录权限问题

3.目录是否正确

4.不用控制文件创建外部表的时候,要注意添加分隔符号的参数列表,命令行方式from后面有个datafile default

相关推荐
时差95310 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式12 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
秋意钟39 分钟前
MySQL日期类型选择建议
数据库·mysql
Dxy12393102161 小时前
python下载pdf
数据库·python·pdf
桀桀桀桀桀桀2 小时前
数据库中的用户管理和权限管理
数据库·mysql
superman超哥3 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452003 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
engchina4 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina4 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生4 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea