Вопрос

Я хочу создать представления в GreenPlum Havq, используя простую задаю Talend, что в основном будет иметь файловый файл, который содержит все представления, то мне нужно выполнить сценарий создания просмотра.

Поскольку эти представления (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 -> Постоянные посмотрения детали в другое задание, но это не элегантное решение.

Это было полезно?

Решение

Сделайте это с tjavaflex.Работает для GreenPlumrow, а также !!!В приведенном ниже анамапере я выполняю запрос в TORALYINPUT_6:

"SELECT count(*) FROM "+((String)globalMap.get("ora_sch.SCHEMA_NAME")) + "." + ((String)globalMap.get("ora_tab.TABLE_NAME"))
.

Я не уверен в результате запроса.Это может потерпеть неудачу (например: кто-то просто бросил стол), поэтому я использую TJAVAFLEX + итеративное соединение!Результирующий код сгенерировал Try {...} Catch Block.

В следующем случае I повторяю таблицы схемы и подсчитаете строки в каждой таблице.Я собираю исключения в Java Hashmap.(Hashmap находится в контексте, но это другая история)

Введите описание изображения здесь

tJavaFlex Begin code:
try{

tJavaflex main code:
// here is the main part of the component,
// a piece of code executed in the row
// loop
System.out.println(((String)globalMap.get("TYPE"))+" SELECT count(*) FROM "+((String)globalMap.get("ora_sch.SCHEMA_NAME")) + "." + ((String)globalMap.get("ora_tab.TABLE_NAME")));


tJavaFlex1 End code:
// end of the component, outside/closing the loop
} catch (Exception e) {
//put 
((Map<String, String>)context.EXCEPTIONS).put(
  ((String)globalMap.get("TYPE"))+((String)globalMap.get("ora_sch.SCHEMA_NAME"))+"_"
  +((Integer)globalMap.get("tFlowToIterate_8_CURRENT_ITERATION")).toString(),
((String)globalMap.get("ora_sch.SCHEMA_NAME"))+","
+ ((String)globalMap.get("ora_tab.TABLE_NAME")));

//print some debug message
System.out.print(((String)globalMap.get("TYPE"))+" ### SQL Exception at ");
System.out.print("Iteration Number: "+((Integer)globalMap.get("tFlowToIterate_8_CURRENT_ITERATION")).toString()+","+((String)globalMap.get("ora_sch.SCHEMA_NAME"))+","+ ((String)globalMap.get("ora_tab.TABLE_NAME")));
System.out.println(" ###");
//e.printStackTrace();
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top