使用tOracleRow Talend获取时出错

时间:2017-04-16 10:20:28

标签: talend

我正在尝试使用tOracleRow创建一个表。我正在尝试使用The Below语句创建Table:

DROP TABLE TEMP_ORDERS;
CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID;

enter image description here

现在的问题是这个查询运行正常sql Developer.Whereas当我在tOracleRowtOracleinput粘贴此查询时,它说的是无效的char。然后我尝试删除{{1}但是它说SQL命令没有正确结束。

enter image description here

6 个答案:

答案 0 :(得分:1)

可以让tOracleRow一次执行多个语句。

您需要提供一个"附加参数"到您正在使用的连接:allowMultiQueries=true

新建连接向导:

New Connection Wizard

如果您使用多个语句,还需要在BEGIN END组件中使用tOracleRow块。在结束END关键字后,您还需要有分号。

使用BEGIN END块的多个语句:

Multiple statements with BEGIN END block

答案 1 :(得分:1)

在您的查询中,您使用的是DML以及多个查询。因此,您需要执行以下操作才能使工作正常进行:

i)使用tOracleConnection打开oracle连接。在其他参数集allowMultiQueries=true

ii)使用tOracle行执行查询。用分号分隔查询。

答案 2 :(得分:0)

尝试:

"
DROP TABLE TEMP_ORDERS;
CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID
"

请求结尾没有;

答案 3 :(得分:0)

而是使用 tOracleRow ,您可以同时使用 tOracleInput tOracleOutput 组件,然后只使用选择查询 "从ITEMS中选择a.ITEM_NAME,b。MANUFACTURER_NAME a 左外联合制造商b ON a.MANUFACTURER_ID = b.MANUFACTURER_ID "作为tOracleInput查询然后选择"删除并创建表"在 tOracleOutput

表上的操作下

答案 4 :(得分:0)

tOracleRow的目的是为每个talend记录流执行一个语句..所以如果你给DROP&在一个tOracleRow中创建语句它根据我的知识不起作用..

您可以尝试以下选项。

- >将您的两个语句分成两个tOracleRow组件或 - >创建一个PLSQL块并在tOracleRow中使用它,如下所示 " BEGIN EXECUTE IMMEDIATE' DROP TABLE TEMP_ORDERS&#39 ;; 执行立即'创建表TEMP_ORDERS AS 从ITEMS中选择a.ITEM_NAME,b。MANUFACTURER_NAME a 左外联合制造商b ON a.MANUFACTURER_ID = b.MANUFACTURER_ID&#39 ;; END;"

让我知道它是否成功

答案 5 :(得分:0)

解决方案基于之前的帖子。 1)在oracle连接中你必须包含" allowMuliQueries = true"。 2)每个查询都需要使用BEGIN END并插入EXECUTE IMMEDIATE - >

BEGIN
EXECUTE IMMEDIATE'DROP TABLE TEMP_ORDERS';
EXECUTE IMMEDIATE'CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID';
END
;