Question

Je souhaite créer des vues dans Greenplum Hawq à l'aide d'un travail de talends simple, qui aurait essentiellement un fichierInput contenant toutes les vues, puis je dois exécuter le script Create View.

Puisque ces vues (50-60 000) proviennent d'un système Oracle, j'ai besoin de trouver celles que nous avons pu créer.

Voici une maquette pour mon problème: Entrez la description de l'image ici

J'ai déjà une vue dans la base de données et je veux la créer 3 fois de plus.Cela échouerait évidemment.

Voici la sortie:

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

Je veux avoir cette sortie 3 fois, car j'essaie d'exécuter 3 fois la requête.(Dans la version finale, je créerais un autre fichier contenant uniquement les requêtes qui ont échoué, afin que nous puissions le réparer plus tard, mais ceci est un point crucial.)

comme une solution de contournement: Je pourrais déplacer cette truelle -> OneError -> CorrectiveFlow -> Échecsviews Pièce dans un travail différent, mais ce n'est pas une solution élégante.

Était-ce utile?

La solution

le faire avec tjavaflex.Ça marche pour Greenplumrow aussi !!!Dans l'exmaple ci-dessous, j'exécute une requête à Torcleinput_6:

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

Je ne suis pas sûr du résultat de la requête.Cela pourrait échouer (par exemple: quelqu'un vient de laisser tomber la table) par conséquent, j'utilise Tjavaflex + ItéRy Connection!Le code résultant généré try {...} bloc de capture.

Dans un cas ci-dessous, je ise des tables d'un schéma et comptez les rangées dans chaque table.Je recueille les exceptions dans un hashmap Java.(Le hashmap est dans le contexte, mais c'est une autre histoire)

Entrez la description de l'image ici

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top