如何使用Talend从tOracleRow组件执行PLSQL脚本?

问题描述

我是Talend的新手。我正在使用Talend 6.5.1版本和Oracle 11。 我已经在Oracle中创建了一个简单的表。

表DDL:

CREATE TABLE test(id NUMBER);

现在,我将按照以下Talend作业流程插入记录。

tOracleConnection ---On Component Ok ---> tOracleRow_1

我能够通过提供PLSQL查询来插入记录。

PLSQL查询

" BEGIN 
 INSERT INTO test(id) values(1);
 INSERT INTO test(id) values(2);
 INSERT INTO test(id) VALUES(3);
 END; "

直到这一切都很好。

现在,我想使它自动化,以便将这些PLSQL查询放入一个文本文件中。 然后,我将以字符串形式读取文件内容,并将该字符串传递给tOracleRow组件。

为此,我准备了以下Talend作业流程。

    tOracleConnection --- On Component Ok ---> tFileInputRaw(reading PLsql file) --- 
--- row1(Main) --> tJavaRow(logging purpose) ---row2(Main) ---> tOracleRow_1

执行此作业时,我正在遵循sqlException。

组件tOracleRow_1中的异常:java.sql.sqlException:无效 sql类型:sqlKind = UNINITIALIZED

如果已经遇到此类问题,请提供您的建议。

谢谢。

解决方法

此问题已解决。

实际上,在PLSQL查询文件中,我们不需要带双引号的封闭查询。

因此,您的PLSQL查询将如下所示。

 BEGIN 
 INSERT INTO test(id) values(1);
 INSERT INTO test(id) values(2);
 INSERT INTO test(id) VALUES(3);
 END;