我想使用一个简单的 talend 作业在 greenplum HAWQ 中创建视图,它基本上有一个包含所有视图的文件输入,然后我需要执行 CREATE VIEW 脚本。
由于这些视图 (50-60.000) 来自 Oracle 系统,我需要找到我们无法创建的视图。
这是我的问题的模拟:
我已经在数据库中有一个视图,我想再创建 3 次。这显然会失败。
这是输出:
Exception in component tGreenplumRow_2
org.postgresql.util.PSQLException: ERROR: relation "ad_apps_dependencies" already exists
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
.--------------.
| tLogRow_4 |
|=------------=|
|componenterror|
|=------------=|
|componenterror|
'--------------'
.-----------------------------------------------------+-------------------------------------------------------------.
| tLogRow_5 |
|=----------------------------------------------------+------------------------------------------------------------=|
|result |result1 |
|=----------------------------------------------------+------------------------------------------------------------=|
|ERROR: relation "ad_apps_dependencies" already exists|CREATE VIEW SYSTEM.AD_APPS AS SELECT * FROM APPLSYS.AD_APPS|
'-----------------------------------------------------+-------------------------------------------------------------'
.------------.
| tLogRow_6 |
|=----------=|
|subjobError |
|=----------=|
|Subjob Error|
'------------'
我想要这个输出 3 次,因为我尝试运行 3 次查询。(在最终版本中,我将创建另一个文件,其中仅包含失败的查询,因此我们可以稍后修复它,但这是一个关键点。)
作为一种解决方法:我可以将此 tRow -> OnError -> FixedFlow -> FailedViews 部分移动到不同的工作中,但这不是一个优雅的解决方案。