Pregunta

Quiero crear vistas en GreenPlum HawQ usando un trabajo de talend simple, que básicamente tendría una función de archivos que contenga todas las vistas, entonces necesito ejecutar el script Crear View.

Dado que estas vistas (50-60.000) provienen de un sistema de Oracle, necesito encontrar los que no pudimos crear.

Aquí hay una burla para mi problema: ingrese la descripción de la imagen aquí

Ya tengo una vista en el DB, y quiero crearlo 3 veces más.Esto obviamente fallaría.

Aquí está la salida:

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

Quiero tener esta salida 3 veces, ya que trato de ejecutar 3 veces la consulta.(En la versión final creara otro archivo que contenga solo las consultas que fallaron, para que podamos solucionarlo más tarde, pero este es un punto crucial).

como solución alternativa: Podría mover este trow -> OnError -> FloodFlow -> FaucheViews parte en un trabajo diferente, pero eso no es una solución elegante.

¿Fue útil?

Solución

hazlo con tjavaflex.¡También funciona para Greenplumrow !!!En la siguiente exmaple ejecuto una consulta en Toracleinput_6:

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

No estoy seguro del resultado de la consulta.Puede fallar (por ejemplo,: alguien acaba de dejar caer la mesa) ¡Por lo tanto, uso la conexión TJavaflex + ITERATE!El código resultante generó intento {...} bloque de captura.

en el siguiente caso. Itime sobre tablas de un esquema y cuente las filas en cada tabla.Recojo las excepciones en un hashmap de Java.(El hashmap está en el contexto, pero esa es otra historia)

ingrese la descripción de la imagen aquí

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top