首页 > 解决方案 > 在日志中发现错误 - ORA-00905: Missing Keyword i

问题描述

我面临一个错误

ORA-00905: 缺少关键字

任何建议如何解决它?

恢复数据库时出现错误。它在该查询中失败:

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 ("SHARED_FILE_AREA":  )  )  reject limit UNLIMITED;

标签: sqloracleora-00905

解决方案


如果我是你,我会删除所有双引号。Oracle 不喜欢它们,而且您会遇到字母大小写的问题,并且您总是必须将对象/列名括在双引号中。只是摆脱他们。

至于你的问题:location应该包含源文件的名称。

修复后,代码可能如下所示:

SQL> CREATE TABLE wia.raskw
  2  (
  3     sourceline   VARCHAR2 (1000 BYTE),
  4     errmsg       VARCHAR2 (1000 BYTE)
  5  )
  6  ORGANIZATION EXTERNAL
  7     (
  8        TYPE oracle_loader
  9        DEFAULT DIRECTORY SHARED_FILE_AREA
 10        ACCESS PARAMETERS (
 11           RECORDS DELIMITED BY NEWLINE
 12           NOLOGFILE
 13           NODISCARDFILE
 14           BADFILE 'badrows.err'
 15           CHARACTERSET ee8mswin1250
 16           FIELDS TERMINATED BY ','
 17              OPTIONALLY ENCLOSED BY '"'
 18              MISSING FIELD VALUES ARE NULL
 19           (sourceline CHAR, errmsg CHAR))
 20        LOCATION ('your_file_name.txt'))          --> here
 21     REJECT LIMIT UNLIMITED;

Table created.

SQL>

推荐阅读