Talend tCreateTable 错误:NullPointerException

Posted

技术标签:

【中文标题】Talend tCreateTable 错误:NullPointerException【英文标题】:Talend tCreateTable error: NullPointerException 【发布时间】:2018-03-08 20:50:48 【问题描述】:

尝试使用 Talend 在 SQL Server Mgmt Studio 的本地实例中创建表,最终目标是为 ETL 设置直接 Salesforce-SSMS 连接。

我已经设法将数据从 SFDC 加载到 SSMS 中,但只能通过首先手动创建表、在 tMap 中手动映射架构,然后运行我的工作。

我现在想在 SSMS 中使用 tCreateTable 组件创建表,然后使用 AutoMap 功能来映射字段。

但是,我收到一个对我来说毫无意义的空指针异常错误。调试第 370 行显示我的 dbSchema_tCreateTable_1 对象为空,但我不明白为什么。我已经从存储库中定义了它。下面是我设置的一些图片:

Sample Schema

Error Message and Job Design

Line 370 and suspect in Red

我知道我的数据库连接很好,因为我已经将数据推送到现有表中,但是对于我(和我的 2 位 Java 工程师)的一生来说,我无法弄清楚这一点。我有 5 天的 Talend 经验,如果我犯了一个愚蠢的错误,我深表歉意。任何帮助将不胜感激!

编辑:Component view of tCreateTable

编辑 2:Component view of tFixedFlowInput

编辑 3:Component view of tMSSqlOutput

编辑 4:tMSSqlConnection

【问题讨论】:

嗨,Ethan,您能否从示例架构定义中的列中删除默认值 0(将其留空,无空格),然后重试? @iMezouar 仍然不起作用,同样的 NPE 错误。我可以提供其他有用的屏幕截图吗? 能否请您发布组件的 tCreateTable 视图? @iMezouar 当然是在编辑中添加的。如果您需要更多信息,请告诉我 这对我来说似乎没问题。现在您能否在您的 tMSSqlConnection 和 tCreateTable 之间添加一个 OnSubjobOk 触发器? 【参考方案1】:

在第一个作业(在错误消息和作业设计中提供)发生 NPE,因为当 tCreateTable 尝试调用 null.executeStatement() 时,连接仍未创建(为 null) 你可以修改你的第一个工作把 tMsSQLConnection -> OnSubjobOK -> tCreateTable 或者完全删除连接元素并将连接参数设置为 tCreateTable。

如果没有帮助,请回答以下问题:

请分享使用第二个作业时出现异常堆栈跟踪和错误消息(连接 -> tFixedFlowInput - tMSSQLOutput) 你用过什么版本的工作室(Open Studio 或企业版)? 如果它不是最新的(6.5.1)你能升级它吗? 如果是,您可以导出您的工作并分享吗? (即在 talend 错误跟踪器上)

附:可以尝试自己调试job,选择Run Job -> Debug Run -> Java Debug

使用 eclipse 调试视图可以找出 NPE 发生的原因。

【讨论】:

以上是关于Talend tCreateTable 错误:NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

Talend - 不使用子作业的错误处理

talend openstudio 在OracleInput组件中guess Schema 出现Database connection is failed 的错误

一般错误:1005 Can't create table ,在 laravel 中外键约束形成错误

无法使用 Talend 连接到 Access 2007 数据库

无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError

Talend 作业未运行