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

Oracle 无法确定“故障”的原因;ORA-00922:缺少或无效选项“;错误,oracle,syntax-error,schema,talend,Oracle,Syntax Error,Schema,Talend,当我试图运行Talend作业将数据从Oracle脚本加载到数据库表时,出现“ORA-00922:缺少或无效选项”错误 脚本本身已经过测试,并在Oracle SQL编辑器中以及Talend中成功运行 有人知道为什么在Talend中运行加载作业时会出现错误吗 在internet上快速查找此错误可显示以下内容: ORA-00922:如果在定义存储子句或列时指定了无效选项,则会出现缺少或无效选项的情况。Oracle提供了有关此错误的以下信息: 原因:指定列中的有效选项为NOTNULL,用于指定该列不能包

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

脚本本身已经过测试,并在Oracle SQL编辑器中以及Talend中成功运行

有人知道为什么在Talend中运行加载作业时会出现错误吗

在internet上快速查找此错误可显示以下内容:

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

原因:指定列中的有效选项为NOTNULL,用于指定该列不能包含任何空值。数据类型后面只能有约束。指定日期或长数据类型的最大长度也会导致此错误

如果我们可以假设错误来自模式,有人看到这个模式有什么错误吗

  • “列”和“类型”列属于数据源:Oracle SQL脚本
  • “DB列”和“DB类型”列属于Oracle DB表,数据应该加载到该表中

下面是直接从Oracle获取的目标表定义。表名为Payments

目标表已存在。当我直接在表中运行insert脚本时,首先我在命令行得到消息:Error:6 Column:17 Error report-SQL Error:ORA-00984:Column not allowed。第6行第17列的项目恰好是程序代码

当我在程序代码的值(以及日期值)周围加上引号时,插入就起作用了。正在填充不可为NULL的字段,如果我尝试将NULL插入不可为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,0,0,0,0,0)

感谢您的帮助,错误原因已经确定。我在脚本末尾放了一个分号(编写SQL查询时通常会这样做),但在Talend中,整个脚本以双引号开始和结束。脚本后面不能有分号,然后以双引号结束。删除分号后,错误就消失了


我不知道塔伦德。然而,如果删除日期模式会发生什么?我刚刚尝试过。没有什么不同。同样的错误仍然显示了唯一的机会:试着在日志中的某个地方找到
createtable
语句,看看哪里出了问题。祝你好运Oracle错误非常普遍,因此在尝试调试问题时没有多大帮助。目标表是否已经存在,或者您的Talend作业正在创建它?如果它不存在,请尝试直接在Oracle中创建它,然后再次运行Talend作业。如果该表已经存在,则检查Talend中是否已填充所有不可为空的列job@marmitebomber,我不知道怎么做,但我会和我们的DBA核实一下