微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法确定“ORA-00922:缺少或无效选项”错误的原因

如何解决无法确定“ORA-00922:缺少或无效选项”错误的原因

当我尝试运行 Talend 作业以将数据从 Oracle 脚本加载到数据库表时,出现“ORA-00922:缺少或无效选项”错误

脚本本身已经过测试并在 Oracle sql 编辑器和 Talend 中成功运行

有谁知道为什么我在 Talend 中运行加载作业时可能会收到错误消息?

在互联网上快速查找此错误显示

ORA-00922:如果在定义存储子句或列时指定了无效选项,则会出现缺少或无效选项。 Oracle 提供了有关此错误的以下信息:

原因:指定列时的有效选项为 NOT NULL 以指定该列不能包含任何 NULL 值。只有约束可以遵循数据类型。指定 DATE 或 LONG 数据类型的最大长度也会导致此错误

如果我们可以暂时假设错误来自 SCHEMA,那么有人发现这个模式有什么问题吗?

  • “Column”和“Type”列属于数据源:Oracle sql 脚本
  • “DB Column”和“DB Type”列属于数据应该加载到的 Oracle DB 表

enter image description here

这是直接取自 Oracle 的目标表定义。表名是 Payments

enter image description here

目标表已经存在。当我直接在表中运行插入脚本时,首先我收到消息:命令行错误:6 列:17 错误报告 - sql 错误:ORA-00984:此处不允许列。第 6 行第 17 列的项目恰好是程序代码

当我在程序代码的值(以及日期值)周围加上引号时,插入就起作用了。正在填充不可为空的字段,如果我尝试将 NULL 插入不可为空的字段,则会显示相应的错误消息

这是一个有效的插入脚本:

INSERT INTO PAYMENTS 
(CLaimANT_ID,CLaim_ID,PROGRAM_CODE,BWE_DATE,PROCESS_DATE,DEPOSIT_DATE,GROSS_AMOUNT,CLaimANT_NET_AMOUNT,FEDERAL_TAXES,STATE_LOCAL_TAXES,OP_OFFSET,OOS_OP_OFFSET,CHILD_SUPPORT,OOS_CS,FPUC,LWA)
VALUES
(123456,54321,'ABC','24-OCT-20','01-JAN-21','04-JAN-21',149,128,15,6,0)

解决方法

感谢您的帮助,错误原因已查明。我在脚本末尾放了一个分号(就像编写 SQL 查询时通常所做的那样)。但在 Talend 中,整个脚本以双引号开头和结尾。脚本后不能有分号,然后以双引号结束。去掉分号后,错误就消失了

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。