在项目上遇到这样一个问题,同样创建外部表的语句,在不同版本数据库上创建,报错:“外部表不支持的操作“。
后面通过查看对应版本的《DM8_SQL语言使用手册.pdf》文档发现,外部表不再支持没有指定目录情况下的创建外部表。
数据库版本为:1-2-174-2022.11.21-175072-20024-ENT
可通过SQL语句查看数据库的版本:
select build_version from v$instance;
如果你也遇到这样的情况,可以试试下面的创建方法:
方法1
1).编写数据文件,如下:
vi /home/dmdba/data.txt
1|9|7
4|3|2
2).创建目录对象如下:
CREATE OR REPLACE DIRECTORY "EXTDIR" AS '/home/dmdba/';
3).建表语句:
DROP TABLE if EXISTS EXT_TABLE2;
CREATE EXTERNAL TABLE EXT_TABLE2(
C1 INT,
C2 INT,
C3 INT
) FROM DATAFILE DEFAULT DIRECTORY EXTDIR LOCATION ('data.txt') PARMS(FIELDS
DELIMITED BY '|' );
select * from ext_table2 ;
4). 查询外部表
select * from EXT_TABLE2;
方法2:
1).创建控制文件
vi /home/dmdba/quan.ctrl
OPTIONS(
DATA = 'quan.txt'
ERRORS = 5
BADFILE = 't1.bad'
LOG = 't1.log'
NULL_STR = ' ffff '
SKIP = 0
CHARACTER_CODE = 'utf-8'
)
LOAD DATA
INFILE 'quan.txt'
BADFILE 'test1.bad'
INTO TABLE fldr1
FIELDS TERMINATED BY '|'
2).编辑测试数据
vi /home/dmdba/quan.txt
1|a|2
1|2|3
3).创建目录对象如下:
CREATE OR REPLACE DIRECTORY "EXTDIR_3" AS '/home/dmdba/';
4).创建外部表
drop TABLE fldr1 ;
CREATE EXTERNAL TABLE fldr1(
"C1" varchar(10),
"C2" varchar(10),
"C3" varchar(10)
) FROM DEFAULT DIRECTORY EXTDIR_3 LOCATION ('quan.ctrl');
5).查询外部表
select * from fldr1;
更多内容,请访问达梦社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台