外部表语法错误 KUP-01005 Oracle

Posted

技术标签:

【中文标题】外部表语法错误 KUP-01005 Oracle【英文标题】:External table syntax error KUP-01005 Oracle 【发布时间】:2018-08-21 16:25:09 【问题描述】:

每次选择我创建的外部表时,我都会收到如下错误。

ORA-29913:bład podczas wykonywania wywołania(标注)ODCIEXTTABLEOPEN

ORA-29400:bład kartrydza danych

KUP-00554:解析访问参数时遇到错误

KUP-01005:语法错误:找到“减号”:期待以下之一:“坏文件、字节序标记、字符集、列、数据、分隔、丢弃文件、dnfs_enable、dnfs_disable、disable_directory_link_check、字段、字段、固定、io_options、加载、日志文件、语言、nodiscardfile、nobadfile、nologfile、date_cache、dnfs_readbuffers、预处理器、读取大小、字符串、跳过、区域、变量、xmltag"

KUP-01007:第 4 行第 23 列 29913. 00000 - “执行 %s 标注时出错”

外部表创建成功。这是创建外部表的脚本:

CREATE TABLE TB_CNEI_01C
(
    NEW_OMC_ID              VARCHAR(2),
    NEW_OMC_NM              VARCHAR(8),
    NEW_BSS_ID              VARCHAR(6),
    NEW_BSS_NM              VARCHAR(20),
    OMC_ID                  VARCHAR(2),
    OMC_NM                  VARCHAR(8),
    OLD_BSS_ID              VARCHAR(6),
    OLD_BSS_NM              VARCHAR(20),
    DEPTH_NO                INTEGER,
    NE_TP_NO                INTEGER,
    OP_YN                   INTEGER,
    FAC_ALIAS_NM            VARCHAR(20),
    FAC_GRP_ALIAS_NM        VARCHAR(20),
    SPC_VAL                 VARCHAR(4),
    INMS_FAC_LCLS_CD        VARCHAR(2),
    INMS_FAC_MCLS_CD        VARCHAR(3),
    INMS_FAC_SCLS_CD        VARCHAR(3),
    INMS_FAC_SCLS_DTL_CD    VARCHAR(2),
    LDEPT_ID                VARCHAR(3),
    FAC_ID                  VARCHAR(15),
    MME_IP_ADDR             VARCHAR(20),
    MDEPT_ID                VARCHAR(4),
    HW_TP_NM                VARCHAR(20),
    MME_POOL_NM             VARCHAR(20),
    BORD_CNT                INTEGER,
    FAC_DTL_CLSFN_NM        VARCHAR(50),
    INSTL_FLOOR_NM          VARCHAR(20),
    INSTL_LOC_NM            VARCHAR(30)
)
ORGANIZATION EXTERNAL
(
TYPE oracle_loader
DEFAULT DIRECTORY EXTERNAL_DATA
ACCESS PARAMETERS
    (
        RECORDS DELIMITED BY NEWLINE
        badfile EXTERNAL_DATA:'testTable.bad'
        logfile EXTERNAL_DATA:'testTable.log'
        CHARACTERSET x-IBM949
        FIELDS TERMINATED BY ','
        MISSING FIELD VALUES ARE NULL
            (
                    NEW_OMC_ID              VARCHAR(2),
                    NEW_OMC_NM              VARCHAR(8),
                    NEW_BSS_ID              VARCHAR(6),
                    NEW_BSS_NM              VARCHAR(20),
                    OMC_ID                  VARCHAR(2),
                    OMC_NM                  VARCHAR(8),
                    OLD_BSS_ID              VARCHAR(6),
                    OLD_BSS_NM              VARCHAR(20),
                    DEPTH_NO                INTEGER,
                    NE_TP_NO                INTEGER,
                    OP_YN                   INTEGER,
                    FAC_ALIAS_NM            VARCHAR(20),
                    FAC_GRP_ALIAS_NM        VARCHAR(20),
                    SPC_VAL                 VARCHAR(4),
                    INMS_FAC_LCLS_CD        VARCHAR(2),
                    INMS_FAC_MCLS_CD        VARCHAR(3),
                    INMS_FAC_SCLS_CD        VARCHAR(3),
                    INMS_FAC_SCLS_DTL_CD    VARCHAR(2),
                    LDEPT_ID                VARCHAR(3),
                    FAC_ID                  VARCHAR(15),
                    MME_IP_ADDR             VARCHAR(20),
                    MDEPT_ID                VARCHAR(4),
                    HW_TP_NM                VARCHAR(20),
                    MME_POOL_NM             VARCHAR(20),
                    BORD_CNT                INTEGER,
                    FAC_DTL_CLSFN_NM        VARCHAR(50),
                    INSTL_FLOOR_NM          VARCHAR(20),
                    INSTL_LOC_NM            VARCHAR(30)    
            )
    )
LOCATION ('TB_CNEI_01C.csv')
);

我已经检查了数据目录和数据文件的所有权限

【问题讨论】:

错误信息显示在访问参数的第 4 行的减号处解析失败。我现在无法对此进行测试,所以有点猜测,但您可以尝试将该字符集引用为 "x-IBM949"'x-IBM949' 【参考方案1】:

您的 CHARACTERSET(x-IBM949) 包含 - 字符似乎无效

你可以试试没有那个标志的其他替代品,

比如 AL32UTF8US7ASCIIWE8MSWIN1252 ..等

【讨论】:

我必须将数据从 CP949(韩国标志)转换为 UTF-8。我该怎么做?【参考方案2】:

我的“CREATE TABLE ..”脚本中有几行注释。我删除了那些注释行,错误消失了。 我收到了上述建议:http://www.orafaq.com/forum/t/182288/

【讨论】:

以上是关于外部表语法错误 KUP-01005 Oracle的主要内容,如果未能解决你的问题,请参考以下文章

oracle 外部表之 sqlldr 生成

oracle case语数据类型不一致问题

在 Oracle 过程中创建外部表

Oracle SQL中的Merge用法

使用不同的底层文件内容多次读取同一个 Oracle 外部表会引发错误 KUP-05011:文件大小已更改

批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案