Domanda

Voglio creare viste in GreenPlum Hawq utilizzando un semplice lavoro di talend, che fondamentalmente avrebbero un fileInput che contiene tutte le viste, allora devo eseguire lo script di visualizzazione Crea.

Poiché questi punti di vista (50-60.000) provengono da un sistema Oracle ho bisogno di trovare quelli che non siamo riusciti a creare.

Ecco un mock up per il mio problema: Inserire l'immagine Descrizione qui

Ho una vista già nel DB, e voglio crearlo altre 3 volte.Questo ovviamente fallisce.

Ecco l'output:

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|
'------------'
.

Voglio avere questa uscita 3 volte, mentre provo a eseguire 3 volte la query.(Nella versione finale creerei un altro file che contiene solo le query che non è riuscito, quindi possiamo ripararlo più tardi, ma questo è un punto cruciale.)

come una soluzione alternativa: Potrei spostare questo braccio -> OnError -> PROFESSIFFLOW -> FALLIATOVISIE PARTE IN UN LAVORO DIVERSO, ma non è una soluzione elegante.

È stato utile?

Soluzione

fallo con Tjavaflex.Funziona anche per GreenPlumrow !!!Nel sottostante Exmaple eseguo una query in Toracleinput_6:

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

Non sono sicuro del risultato della query.Potrebbe fallire (ad esempio: qualcuno ha appena lasciato cadere il tavolo) pertanto uso Tjavaflex + Iterate Connection!Il codice risultante generato prova {...} blocco catch.

In sotto caso iterando le tabelle di uno schema e contano le righe in ogni tavolo.Raccolgo le eccezioni in un Hashmap Java.(L'hashmap è nel contesto, ma questa è un'altra storia)

Inserisci Descrizione dell'immagine qui

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();
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top