Oracle数据库恢复执行建表语句触发ORA-00905缺失关键字错误求解决
ORA-00905报错修复方案
问题根因
你执行的创建外部表语句的LOCATION子句存在语法错误,是触发ORA-00905缺失关键字的直接原因:
LOCATION配置中错误在目录对象名后添加了多余的冒号,且冒号后未填写要加载的源数据文件名,不符合Oracle外部表的语法规范。
修复步骤
- 确认你的源数据文件名,比如源文件名为
raskw_source.csv,且已经存放在SHARED_FILE_AREA目录对象对应的操作系统路径下 - 修改
LOCATION子句为正确格式,可选两种写法:- 已指定
DEFAULT DIRECTORY的场景,可直接写文件名:LOCATION ('raskw_source.csv') - 需显式指定目录对象的场景,冒号要放在目录对象名的双引号外侧,后接带单引号的文件名:
LOCATION ("SHARED_FILE_AREA":'raskw_source.csv')
- 已指定
修复后完整语句示例
CREATE TABLE "WIA"."raskw" ( "sourceline" VARCHAR2 (1000 BYTE), "errmsg" VARCHAR2 (1000 BYTE) ) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY "SHARED_FILE_AREA" ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE NOLOGFILE NODISCARDFILE BADFILE 'badrows.err' CHARACTERSET ee8mswin1250 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL (sourceline CHAR, errmsg CHAR)) LOCATION ('raskw_source.csv') ) REJECT LIMIT UNLIMITED;
额外校验点
- 提前确认
SHARED_FILE_AREA目录对象已在数据库中创建,且WIA用户被授予了该目录的读权限 - 确认语句中指定的
ee8mswin1250字符集和源数据文件的字符集一致,避免加载后出现乱码
内容的提问来源于stack exchange,提问作者Nevis
相关产品推荐
相关产品推荐

