注册
达梦数据库 创建外部表 [-7082]:外部表数据错误
专栏/培训园地/ 文章详情 /

达梦数据库 创建外部表 [-7082]:外部表数据错误

001 2024/04/08 707 0 0
摘要

定义

外部表,是指不存在于数据库中的表。通过向达梦提供描述外部表的元数据,可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样### 三级标题来进行访问。
外部表的数据存储在操作系统中,是操作系统文件,建立外部表的时候,不会产生段,页簇等存储结构,只有与表相关的定义放在数据字典中。在数据库中不能对外部表的内容进行修改,不能对外部表建立主键,索引,外键。不需要将外部表的数据载入到数据库中来,通过 sql 解码器来访问外部表
如何建立外部表:
1、创建数据文件

[dmdba@localhost opt]$ vi a.txt
[dmdba@localhost opt]$ cat a.txt
序号,内容
1,AAAA
2,BBBBB
3,DD
4,CCCC
5,FF
6,WERWRWRW
7,iiiii
8,nnnnn
9,SER
10,EWDEWRWRWRWRWEEEEEEEEEEEEEEEEEEEEEEEE
[dmdba@localhost opt]$ 

2:控制文件

[dmdba@localhost opt]$ vi a.ctl
[dmdba@dw01:/opt]$ cat a.ctl
LOAD DATA
INFILE 'a.txt'
INTO TABLE TEST.EXT
FIELDS ','

3:创建目录

SQL> create directory extdir as '/opt/'   ;
操作已执行


4:创建外部表

SQL> create external table test.ext(id int,name varchar(20)) from default direct                                                                                                  ory extdir location('a.ctl');
操作已执行
已用时间: 10.564(毫秒). 执行号:403.

错误原因:

1: 表定义
表定义的test.ext(id int,name varchar(20)),varchar为20,但是a.txt中有一个记录明显超过20。

修改表定义:发现外部表的表定义无法修改

删除重建

SQL> drop table TEST.EXT;
操作已执行
已用时间: 128.774(毫秒). 执行号:708.
SQL> create external table test.ext(id int,name varchar(60)) from default directory extdir location('a.ctl');
操作已执行
已用时间: 39.210(毫秒). 执行号:709.
SQL>

2:a.txt表里面有表头 ,加载的时候需要去掉表头
修改控制文件, 加skip表头

[dmdba@dw01:/opt]$ vi a.ctl
[dmdba@dw01:/opt]$ cat a.ctl
options(
skip=1
)
LOAD DATA
INFILE 'a.txt'
INTO TABLE TEST.EXT
FIELDS ','
[dmdba@dw01:/opt]$

3:检查权限
a.txt 以及 a.ctl均在/opt路径下,赋予dmdba权限

[root@dw01:/opt]$ chown -R dmdba:dinstall /opt
[root@dw01:/opt]$ chmod -R 777 /opt

修改为/opt

SQL>  drop directory extdir;
SQL> create directory extdir as '/opt'   ;

SQL> select * from dba_directories;

行号     OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- ----- -------------- --------------
1          SYS   EXTDIR         /opt

已用时间: 1.155(毫秒). 执行号:804.
SQL>

修改完毕后查询

SQL> select * from test.ext;

行号     ID          NAME
---------- ----------- -------------------------------------
1          1           AAAA
2          2           BBBBB
3          3           DD
4          4           CCCC
5          5           FF
6          6           WERWRWRW
7          7           iiiii
8          8           nnnnn
9          9           SER
10         10          EWDEWRWRWRWRWEEEEEEEEEEEEEEEEEEEEEEEE

10 rows got

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服