注册
DCP学习心得-外部表
专栏/培训园地/ 文章详情 /

DCP学习心得-外部表

Erville 2025/05/13 29 0 0
摘要

DCP考试进行实验复习的过程中,在使用外部表时踩了一些小坑,在此记录分享一下:

外部表的定义:
外部表,数据来源于外部操作系统,一个文本文件。建立外部表的时候,不会产生段,页簇等存储结构,只有与表相关的定义放在数据字典中。(内部表的数据都保存在表空间中。)
外部基表是只读的,不允许增删改,不允许 TRUNCATE;
用户创建外部表必须具有指定目录的读写权限(因为外部表查询时会在目录下生成日志文件)。

实操:
(1)创建字典

SQL>grant CREATE ANY directory to DMTEST;

若此时碰到报错:授权者没有此授权权限,原因是默认达梦数据库默认把ANY的授权给禁用了,就算是使用SYSDBA也不行。
解决方案
修改dm.ini 路径:/opt/dmdbms/data/DAMENG/dm.ini
增加一行(可以先查找,如果有就只要把值改成1就行):

ENABLE_DDL_ANY_PRIV = 1

使用SQL命令修改(推荐)

-- sp_set_para_value(1,'ENABLE_DDL_ANY_PRIV',1);
或
alter SYSTEM set 'ENABLE_DDL_ANY_PRIV'=1 both;

用户拥有权限后可进行字典的创建:

CREATE DIRECTORY EMP as '/opt'

(2)创建外部表
此时可以看到,创建方式选择控制文件目录时,下方的控制文件目录名可以选择刚才创建的字典EMP。
image.png

(3)根据emp.txt的内容编写控制文件

options
(skip=1
errors=10
log='emp.log'
character_code='UTF-8')
load data
infile 'emp.txt' str X '0d0a'
badfile 'emp.bad'
into table DMTEST.EMP
fields ','

(4)指定目录权限
由于用户创建外部表必须具有指定目录的读写权限(因为外部表查询时会在目录下生成日志文件),若不具有制定目录的读写权限则会出现报错。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服